2013-05-07 141 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)。

如果你有一個以上的連接,你將要爲每一個屬性。

有時,您想盡早處理響應,但是當您調用自己的服務器時,大部分時間都沒有必要。