我正在使用一个API,该API会针对许多不同的错误发回HTTP 406,以及自定义消息(原因短语)。它可能看起来像:
406 Not Acceptable: User is already logged in
406 Not Acceptable: Missing password field
406 Not Acceptable: Node does not exist.
我可以使用以下方式获取406状态代码和标准“不可接受”字符串:
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSInteger statusCode = [HTTPResponse statusCode];
[NSHTTPURLResponse localizedStringForStatusCode:HTTPResponse.statusCode];
但是我确实需要原因短语消息才能知道如何处理响应。我怎样才能获得它,最好使用标准的iOS SDK?
答案 0 :(得分:1)
我确实需要原因短语消息才能知道如何处理响应。
然后API被破坏了。原因短语只是一个调试辅助工具。这并不意味着告知客户行为。
状态代码适用于自动机,而Reason-Phrase适用于人类用户。客户无需检查或显示Reason-Phrase。
如果只有状态代码无法传达有关响应的信息,则它的正确位置是标题或响应正文。原因短语不是放置客户使用所需信息的正确位置。
答案 1 :(得分:0)
状态代码406表示服务器无法使用请求中指定的accept-header进行响应。
406不可接受所请求的资源只能根据请求中发送的Accept标头生成不可接受的内容。
这些错误代码不是特定于iOS的。如果您想根据不同的出现原因显示不同的消息,我想您应该使用您的API / Web服务器进行检查,并使用代码中的条件来显示每个消息的自定义消息。
答案 2 :(得分:0)
最终,您可以使用ASIHTTPRequest库获取原因短语。
http://allseeing-i.com/ASIHTTPRequest/
在我的案例中使用AFNetworking和NSURLSession就像这样简单。