【问题标题】:Read status line (status code and reason phrase) using AFNetworking's AFHTTPRequestOperation使用 AFNetworking 的 AFHTTPRequestOperation 读取状态行(状态代码和原因短语)
【发布时间】:2013-09-19 06:21:08
【问题描述】:

我在 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 >> 建议更改服务器的行为方式,但这并不总是可用的选项。

有什么想法吗?

【问题讨论】:

  • 您使用的是什么 URL?

标签: ios afnetworking asihttprequest http-1.1 rfc2616


【解决方案1】:

NSHTTPURLResponse 没有实现公开数据的方法,HTTP RFC 也没有要求这样做。 AFNetworking 使用NSURLRequest / NSURLResponse,所以 AFNetworking 也不能给你。另一方面,ASIHTTPRequest 可以,因为它使用了较低级别的CFNetwork 框架。

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

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

【讨论】:

  • 好的。那是我害怕听到的答案:)
猜你喜欢
  • 2019-11-07
  • 2017-06-17
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多