检查url是否存在而不检查HTTP响应

时间:2013-05-07 12:50:23

标签: ios http

我有一个场景,当HTTP状态代码不等于200即HTTP_OK时,我必须相应地进行一些修改。但我不想在内部进行这些更改 - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)响应是NSURLConnectionDelegate的委托方法。

在没有检查响应状态代码的情况下,有没有其他方法可以找到URL无法成功打开?

5 个答案:

答案 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)

我也有同感。我在didFinishLoadingdidFailWithError处理响应代码。

我只是创建一个名为lastHTTPResponse的{​​{1}}类型的属性 并在NSHTTPURLResponse中设置,然后再处理。使用每个响应进行设置,以便获得最后一个代码而不是任何重定向(301或302)。

如果您有多个连接,则需要为每个连接提供一个属性。

有时,您希望尽早处理响应,但在大多数情况下,当您呼叫自己的服务器时,它不是必需的。