我正在使用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());
上傳帶問題的代碼。 – Lucifer
嗨路西法,已經上傳代碼的問題:)我希望有人可以暗示的東西在這裏... – AliR
我想我得到了答案,嘗試'conn.close();'而不是'如果'conn.disconnect(); 「這兩種方法都有不同的含義。 – Lucifer