我正在使用一个API,该API会发回HTTP 406的许多不同错误以及自定义消息(原因短语)。它可能看起来像:
406 Not Acceptable: User is already logged in406 Not Acceptable: Missing password field406 Not Acceptable: Node does not exist.
我可以使用以下命令获取406状态代码和标准“不可接受”字符串:

NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;

NSInteger statusCode = [HTTPResponse statusCode];

[NSHTTPURLResponse localizedStringForStatusCode:HTTPResponse.statusCode];

但是,我确实需要原因短语消息来知道如何处理响应。如何获得它,最好使用标准的iOS SDK?

最佳答案

我真的需要原因短语消息来知道如何处理响应。

然后,API被破坏了。原因短语仅是调试辅助。这并不是要告知客户行为。

RFC 2616 § 6.1.1:

状态代码供自动机使用,原因短语供人类用户使用。不需要客户检查或显示原因短语。

如果存在关于响应的信息,而状态码不能单独传达该信息,则该信息的适当位置是标头或在响应正文中。原因短语不是放置客户使用所需信息的正确位置。

关于ios - iOS/Obj-c-获取HTTP状态码响应消息(原因短语),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21859791/

10-12 03:00