2013-03-06 42 views
0

我在iOS上使用ASIHttpRequest上傳文件。在某些情況下,用戶無法上傳文件(因爲某些條件未滿足),所以我的服務器需要返回一個包含自定義標題的錯誤(400狀態碼)。發生這種情況時,ASIHttpRequest失敗,但沒有狀態碼和響應標頭...CFNetwork/ASIHttpRequest:上傳失敗,無狀態碼,無響應頭

但它只適用於大數據(超過1M)。對於較小的數據,這是工作。我已經在源代碼中進行了挖掘,發現在發送所有數據之前服務器返回400時,CFNetwork將返回一個kCFStreamEventErrorOccurred,並且從這裏讀取除讀取流中的錯誤之外的其他內容是不可能的。但是,如果請求在所有數據發送後都失敗,它會發送一個kCFStreamEventEndEncountered,並從此處讀取狀態碼和響應讀取器。

由於ASIHttpRequest已經停產,我想自己修復它,但是我還沒有找到如何去做。我擔心這是一個CFNetwork的限制...我沒有發現任何關於互聯網或文檔...

有誰知道如何處理?或者對CFNetwork有足夠的瞭解給我一些線索?

謝謝!

回答

0

好的,我找到了答案。

我已經修復它在服務器端。如果它與一個主體(甚至只有一個字符)返回一個錯誤,它可以在iOS端工作,CFNetwork能夠讀取狀態碼和頭文件。

我在服務器上使用Tomcat和Spring,這可能是一個錯誤,當你只在響應中設置狀態碼。也許它沒有正確關閉響應流,我不知道。

CFNetwork似乎非常明智的方式...因爲它與NSUrlRequest沒有任何機構。

相關問題