2011-10-12 76 views
2

我想使用下面的代碼片段在android(2.3.4)中執行webservice調用。我的問題發生在conn.getOutputStream上,因爲此方法似乎需要20秒才能返回。有什麼想法嗎?HttpURLConnection.getOutputStream()需要20秒。爲什麼?

URL uri = new URL(serviceURI + "/remoteMethod"); 
HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); 
conn.setDoOutput(true); 
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 

Log.d(TAG, "opening output stream"); 
OutputStreamWriter writer = new OutputStreamWriter(
    conn.getOutputStream()); 
Log.d(TAG, "output stream opened"); 

String body = getRequestBody(); 
writer.write(body); 
writer.flush(); 
writer.close(); 
int responseCode= conn.getResponseCode(); 
+1

雖然這並不直接回答你的問題,但我建議使用Android的AsyncTask執行提取,這樣你可以更新你的UI,通知你的用戶等待。 http://developer.android.com/reference/android/os/AsyncTask.html –

+0

這一切都發生在我的UI線程之外的IntentService的子類中,並且這個問題與可用性模式之間幾乎沒有任何關係。 –

+0

這不是因爲它明顯的原因,它實際上可能需要20秒連接到服務器? – jarnbjo

回答

0

看來這可能是一個網絡問題,而且jarnbjo在他的評論中的建議實際上是正確的,說這個連接只是花了很長時間。我將服務器和設備移到另一個網絡(web服務不公開),並解決了問題。

相關問題