2012-09-10 115 views
0

我正在使用HttpUrlConnection的應用程序,與服務器連接的漂亮,但從其中獲取數據時說連接超時IOException。Android httpUrlConnection連接到服務器,但不是互聯網

互聯網,&網絡權限已在android.manifest中設置;有沒有酒吧出現在Android模擬器(這是否說什麼)。

閱讀在developer.android.com: 模擬器的功能限制包括: - 用於確定網絡連接狀態 不支持 - 和其他幾個....

任何幫助將得到高度讚賞。而且我沒有真正的設備來測試它。

接收到的服務器信息確實打印在logcat中。

謝謝...

下面是代碼:

URL url = new URL(urlString); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
try { 
    Log.i(INFO_TAG, "Received server:" + conn.toString()); 
    conn.setInstanceFollowRedirects(true); 
    conn.setRequestMethod("GET"); 
    conn.setRequestProperty("Content-length", "0"); 
    conn.setUseCaches(false); 
    conn.setAllowUserInteraction(false); 
    conn.setConnectTimeout(25000 /* milliseconds */); 
    conn.setReadTimeout(15000/* 10000 *//* milliseconds */); 
    // conn.setDoInput(true); 
    // Starts the query 
    conn.connect(); 
    status = conn.getResponseCode(); 
    Log.d(DEBUG_TAG, "Status recevied is: " + conn.getResponseCode()); 
    responseCode = status; 
    if (responseCode == 200) { 
     Log.i(INFO_TAG, "URL Connection OK"); 
     contentIs = conn.getInputStream(); 
     BufferedReader reader = new BufferedReader(
       new InputStreamReader(contentIs)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
      Log.i(INFO_TAG, "Data Read is: " + line); 
     } 
    } else { 
     Log.d(DEBUG_TAG, "Could not read data from web server"); 
     Log.e(ConnectAndGetData.class.toString(), 
      "Failed to download content"); 
    } 
}// end of try 
catch (Exception ex) { 
    // This is currently being printout 
    Log.d(DEBUG_TAG, "Received an exception" + ex.toString(), ex); 
    ex.printStackTrace(); 
    throw new IOException("Error Connecting" + ex.toString());// "Error connecting"); 
} finally { 
    if (contentIs != null) { 
     contentIs.close(); 
     conn.disconnect(); 
    } 
} 

一兩件事,因爲,它拋出一個連接超時異常不會在調試該行信息被打印: Log.d (DEBUG_TAG,「收到的狀態是:」+ conn.getResponseCode());

+0

上傳帶問題的代碼。 – Lucifer

+0

嗨路西法,已經上傳代碼的問題:)我希望有人可以暗示的東西在這裏... – AliR

+0

我想我得到了答案,嘗試'conn.close();'而不是'如果'conn.disconnect(); 「這兩種方法都有不同的含義。 – Lucifer

回答

1

問題不在於上面的代碼,它是服務器代碼(主要罪魁禍首)。現在實現了一個Web服務,上面的代碼工作正常。

感謝所有評論...

0

您需要這條線

conn.setConnectTimeout(25000 /* milliseconds */); 
conn.setReadTimeout(15000/*10000*/ /* milliseconds */); 

其設置指示此URLConnection是否允許輸入後旗寫

conn.setDoInput(true);

+0

對不起,要更清楚;我已經試過,但沒有變化 – AliR

+0

嗨,所以我有點針對性的問題;上面的代碼無法連接到服務器。任何方向?在服務器端,它確實發現android已經連接,然後發送數據。 – AliR

0

模擬器無法從服務器接收任何響應。我認爲你的網絡連接存在問題。檢查您的代理設置。

+0

代理設置,在哪裏? – AliR

+0

你在公司網絡內嗎? – ponraj

+0

是什麼?我想你應該問這個問題:是的,我使用的服務器與模擬器在同一臺機器上。 – AliR

相關問題