ios - 使用AFNetworking的AFHTTPRequestOperation读取状态行(状态代码和原因短语)

标签 ios afnetworking asihttprequest http-1.1 rfc2616

我在iOS应用程序中从ASIHTTPRequest切换到AFNetworking

RF2616 (HTTP/1.1)通过“状态代码”和“原因短语”的组合定义“状态行”。有时服务器会在此“原因短语”中添加一些特定信息,我发现ASIHTTPRequest允许我通过以下方式轻松访问它非常方便

ASIHTTPRequest *request = ...;
NSString *reason = request.responseStatusMessage;

我的问题是我找不到使用AFHTTPRequestOperation的任何方法
NSMutableURLRequest *request = ...;
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

在操作的完成/失败块中,我都可以通过执行以下操作获取状态代码:
int statusCode = [operation.response statusCode];

但是我找不到从哪里获得“原因短语”。

关于StackOverflow的一些答案表明,它应该位于[operation.response allHeaderFields]的条目之一中,但不是。

这个问题的答案<< Can I access "Reason Phrase" from the HTTP Status-Line in NSHTTPURLResponse >>
建议更改服务器的行为,但这并不总是可用的选项。

任何的想法?

最佳答案

NSHTTPURLResponse没有实现公开数据的方法,并且HTTP RFC不需要这样做。 AFNetworking使用NSURLRequest / NSURLResponse,因此AFNetworking也无法将其提供给您。另一方面,ASIHTTPRequest可以使用较低级别的CFNetwork框架。

其他答案中给出的建议是将这些信息移至标题或正文的最佳答案。

您还可以file an enhancement request with Apple和/或坚持使用ASIHTTPRequest。

关于ios - 使用AFNetworking的AFHTTPRequestOperation读取状态行(状态代码和原因短语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18887429/

相关文章:

ios5 - AFNetworking + NsOperationQueue - 下载数千张图片

ios - 如何停止AFHTTPRequestOperation?

iOS > 可以播放部分下载的视频吗?

iphone - 从充当 CMS 的 Wordpress 下载数据的最佳方式是什么

ios - 在详细 View 中显示为 TableView 创建的数据

ios - 支持 iPhone 6 和 iPhone 6+,针对 iPad 纵向和横向使用不同的启动/启动屏幕图像

ios - 我可以构建自己的网络框架(依赖于 AFNetworking)作为 watchOS2 框架吗?

objective-c - iOS 5 : https ( ASIHTTPRequest) stop working

ios - 取消多个 ASIHTTPRequest

ios - 是否可以静默更新 ios 应用程序?