2012-09-12 57 views
7

我正在开发一个iOS应用程序,它向Web服务器发出频繁的请求,并且我正在使用AFNetworking(我非常喜欢)。但是,我遇到了一个我无法解决的授权问题。授权标题未使用AFNetworking发送

服务器要求我提供一个授权头以获得我想要的响应。具体来说,授权头应该是像这样:

Authorization = "ApiKey some-user-name:someNumericalApiKey" 

我使用AFNetworking整个项目,一切工作正常,但这个授权问题。我正在使用以下代码:

[myClient setDefaultHeader:@"Authorization" value:@"ApiKey some-user-name:someNumericalApiKey"]; 

其中myClient指向AFHTTPClient对象。奇怪的是,当我使用AFHTTPRequestOperationLogger在XCode中记录请求时,记录器声称我拥有正确的标题集。但是,授权头似乎无法到达服务器 - 我无法在服务器日志中看到它。

找出问题,我试着用好老NSURLRequest,以及curl作出完全相同的请求,requests库在Python - 所有这些做工精细,即授权头中发送&收到(即我可以在服务器日志中看到它),服务器响应是它应该是。

如果有人遇到同样的问题(并已找到解决方案),我非常感谢您的来信。

谢谢。

+0

被击中的服务是Heroku上的Django应用程序。 – Khandelwal

+0

今天我遇到了同样的问题。很奇怪。 –

+0

任何解决方案!? – bpn

回答

0

如果您手动构建您的操作,那么defaultHeaders不适用,这可能是您的问题的原因。

2

有时(特别是在Django中),这是由重定向消除头参数引起的。例如,/ Object在后台重定向到/ Object /并在切换期间删除必要的auth参数。

如果您使用AFNetworkActivityLoggerAFLoggerLevelDebug级别,那么你应该能够在控制台中检查出来。如果您看到带有/ Object的POST请求和/ Object /的响应,那么这可能表示发生重定向剥离。

+0

这个答案是正确的答案。参考:https://github.com/AFNetworking/AFNetworking/issues/2116 – TharakaNirmana

相关问题