我有一个场景,当HTTP状态代码不等于200即HTTP_OK
时,我必须相应地进行一些修改。但我不想在内部进行这些更改 - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)
响应是NSURLConnectionDelegate
的委托方法。
在没有检查响应状态代码的情况下,有没有其他方法可以找到URL无法成功打开?
答案 0 :(得分:1)
您必须像现在一样检查响应代码,但是您可以发出HTTP HEAD请求,仅在没有内容的情况下返回标头,而不是执行HTTP GET或POST请求。我曾经这样做来检查在Android应用程序中从网络检索到的断链。
答案 1 :(得分:0)
如果没有检查回复,IMO无法找到您要搜索的信息。
如果您要检查实际运行的主线程,可以使用sendsynchronousrequest在实际代码块中获取响应。
但请记住,这将阻止您的主线程,直到返回响应。
答案 2 :(得分:0)
我认为还有另一种方式。如果您不想加载所有响应,则可以在收到[connection cancel]
的HTTP代码后终止请求。
您还可以查看didFailWithError
,但它不适用于404和500错误......
答案 3 :(得分:0)
由URL
标识的HTTP方案(http:
)标识的资源只能通过HTTP服务访问。该HTTP服务有权决定资源是否存在,具体取决于HTTP方法或HTTP标头(例如Authorization
)。
换句话说,除了通过HTTP之外,任何其他方式都无法访问HTTP资源。
答案 4 :(得分:0)
我也有同感。我在didFinishLoading
或didFailWithError
处理响应代码。
我只是创建一个名为lastHTTPResponse
的{{1}}类型的属性
并在NSHTTPURLResponse
中设置,然后再处理。使用每个响应进行设置,以便获得最后一个代码而不是任何重定向(301或302)。
如果您有多个连接,则需要为每个连接提供一个属性。
有时,您希望尽早处理响应,但在大多数情况下,当您呼叫自己的服务器时,它不是必需的。