2011-04-14 67 views
0

我正在使用NSURLRequest從Java Servlet接收數據。 Servlet正在立即寫入輸出流。NSURLRequest太晚接收數據

NSURLRequest立即收到響應connection:didReceiveResponse:,但接收數據持續15-20秒。 (所以這是didReceiveResponsedidReceiveData之間的時間)。它看起來像NSURLRequest緩衝數據並等待更多數據。

如何防止此問題?

+0

您是否認爲[didReceiveResponse]和[didReceiveData]代表之間的時間過長? – 2011-04-14 09:47:29

+0

是的,這就是我的意思。 – flux 2011-04-14 09:51:36

+0

這絕對是Java Servlet問題,將要寫入流中的輸出流的預期大小是多少? – 2011-04-14 09:53:58

回答

0

NSURLConnection使用低級緩衝來收集字節。

didReceiveResponse和didRecieveData之間有區別 - 因爲會有一些代理/數據路由可能導致延遲。

爲了執行指標,您應該記錄第一次didRecieveData和connectionDidFinishLoading之間的時間,並比較您在網絡瀏覽器上執行相同操作的時間。

希望這會有所幫助。

+0

好的,我已經在網絡瀏覽器中測試過了。它也有10-15秒的延遲。我想,servlet不會正確關閉流。我也有一個Java實現。我沒有這樣的延遲。 – flux 2011-04-14 10:14:28

+0

好。現在您可以確定,由於NSURLConnectionDelegates中的某些不一致導致延遲,因爲您可以在瀏覽器中複製該行爲。 Servlets以不同的方式工作,所以我不想進入這個領域。嘗試着重於服務器實現並對其進行排序。我相信它會在iOS代碼中正常工作。乾杯。 – 2011-04-16 23:24:56