2013-05-07 142 views
1

我有一种情况,当HTTP状态码不等于200即HTTP_OK,那么我必须做相应的一些修改。但我不想在内部做这些更改 - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)这是NSURLConnectionDelegate的代表方法。检查url是否存在,但没有检查HTTP响应

是否存在被我可以找出网址不会在未检查响应状态代码成功打开任何其他方式?

回答

0

国际海事组织没有办法在没有检查答复的情况下找到您要搜索的信息。

如果you're试图保持在实际运行的主线程检查您可以使用sendsynchronousrequest让你的实际代码块中的响应。

但请记住,这将阻止你的主线程,直到返回的响应。

0

我不认为有另一种方式。如果您不想加载所有响应,则可以在收到[connection cancel]的HTTP代码后终止请求。

您还可以看看didFailWithError但它并不适用于404和500错误工作...

0

通过一个HTTP方案(http:)一URL标识的资源可以通过HTTP服务只能访问。该HTTP服务有权决定资源是否存在,具体取决于HTTP方法还是HTTP头(例如Authorization)。

换句话说,一个HTTP资源不能由任何其他方法不是通过HTTP访问。

+0

使用“http”方案的URI可通过HTTP服务访问。但是[有几十个URI方案](https://en.wikipedia.org/wiki/URI_scheme#Official_IANA-registered_schemes)与HTTP无关。仅仅因为东西看起来像一个URL并不意味着它是一个HTTP资源。 – alroc 2013-05-07 13:53:16

+0

@alroc当然,这很难解释。 – Sulthan 2013-05-07 14:00:17

1

你必须检查响应代码因为你现在做,但不是做HTTP GET或POST请求可以使HTTP HEAD请求,只没有内容返回头。我曾经这样做过,以检查从Android应用程序中检索到的网络中断链接。

0

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

我只是创建了一个名为类型NSHTTPURLResponse
lastHTTPResponse属性,并将其设置在didReceiveResponse,然后再处理它。将其设置为每个响应,以便获取最后一个代码而不是任何重定向(301或302)。

如果你有一个以上的连接,你将要为每一个属性。

有时,您想尽早处理响应,但是当您调用自己的服务器时,大部分时间都没有必要。