gpt4 book ai didi

ios - HTTP Web 方法名称必须是大写字母?

转载 作者:行者123 更新时间:2023-11-28 23:03:05 25 4
gpt4 key购买 nike

我想在解释我遇到的问题之前我必须设置一些上下文。

对于我的 iOS 应用程序,我正在使用 NSOperationQueue 编写自己的 HTTPClient,并使用 NSRunLoopCommonModes 在主运行循环上执行每个包装 NSURLRequest 和 NSURLConnection 的操作,这样它就不会阻塞 UI。

我注意到不需要身份验证的 Web 服务工作正常并返回数据,但需要身份验证的 Web 服务返回状态代码 503 - 服务不可用错误。

在我调用任何 Web 服务之前,我通过使用 Web View 处理多个 URL 重定向来完成身份验证过程,最后在获得成功后,我设置了一个 cookie。所以这个 cookie 应该为需要身份验证的 Web 服务自动发送,并且需要身份验证的 Web 服务应该可以正常工作。我之前没有 NSOperationQueue 的 HTTPClient 就是这种情况。我没有明确传递 cookie。

我做了很多调试,最后发现问题不是那么复杂而是愚蠢。实际问题是在为我的 URLRequest 发送 HTTP 方法名称时,我以 Pascal 大小写而不是大写形式传递了方法名称。

因此,如果我有,[myURLRequest setHTTPMethod:@"Get"] 要求身份验证的 Web 服务不起作用,但在将方法名称更改为大写字母后,如 [myURLRequest setHTTPMethod:@"GET"] 它开始工作。

原来不是认证的问题,而是web方法名的问题。

我想知道两件事:1) Web 方法名称应始终为大写字母的规则是什么?或者这是特定于 iOS 的?请注意,不需要身份验证的 Web 服务在没有大写字母的 Web 方法名称下也能正常工作。

2) 在成功验证时设置的验证 cookie 永远不会与任何 NSURLRequest 一起显式发送。那么 iOS 是如何自动将它与 URL 请求一起发送的呢?

最佳答案

来自 the specification :

The Method token indicates the method to be performed on the resource identified by the Request-URI. The method is case-sensitive.

然后它继续列出许多方法名称,所有这些名称都是大写的。

关于ios - HTTP Web 方法名称必须是大写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com