使用AFNetworking的AFHTTPRequestOperation读取状态行(状态代码和原因短语)
我在iOS应用程序中从ASIHTTPRequest
切换到AFNetworking
。
RF2616(HTTP / 1.1)通过“状态代码”和“原因短语”的组合定义“状态行”。 有时服务器在这个“Reason Phrase”中添加了一些特定信息,我觉得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]
一个条目中,但事实并非如此。
这个问题的答案<< 我可以从NSHTTPURLResponse中的HTTP状态行访问“原因短语”建议改变服务器的行为方式,但这并不总是可用的选项。
任何想法?
NSHTTPURLResponse
没有实现公开数据的方法,而HTTP RFC也没有要求它。 AFNetworking使用NSURLRequest
/ NSURLResponse
,因此AFNetworking也无法提供给您。 另一方面,ASIHTTPRequest可以使用较低级别的CFNetwork
框架。
在其他答案中给出的建议是将这些信息移到您的标题或正文中,这是最好的答案。
您还可以向Apple提交增强请求 ,和/或坚持使用ASIHTTPRequest。