首先,11我需要您的注意兩件事情:HttpURLConnection的工作API級別<11,不工作的API級別>在Android
1)我試圖與API級手機驗證碼低於11以及相當高的手機,如4.3或4.4。與其他的手機不同的是,高級的api手機無法使這個代碼工作。 2)我在另一個頁面中使用了幾乎精確的代碼,使用它,它正在處理所有apis,只有我要告訴你的那個不工作。 感謝您的收聽。
這是我的方法,使連接:
public static StringBuilder httpGetConnection (String urlStr, Context dialogCtx) {
final String noServ = "Server Error";
final String noServErr = "Server is unavailable";
StringBuilder err= new StringBuilder();
err.append("Error!");
HttpURLConnection conn = null;
BufferedReader rd = null;
StringBuilder sb = null;
try {
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000);
conn.setReadTimeout(10000);
if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 299) {
// Buffer the result into a string
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
} //string builder dolduruldu
rd.close();
conn.disconnect();
}
else {
AlertDialogDisp(dialogCtx, noServ, noServHata);
}
}
catch (Exception e) {
return err;
}
finally {
if (rd != null) {
try {
rd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (conn != null) {
conn.disconnect();
}
}
return sb;
}
這是我的代碼,「使用」的方法:
try {
JSONTokener neuTokener = new JSONTokener(Sources.httpGetConnection (UrlStr, getActivity()).toString());
JSONArray neuArray=new JSONArray(neuTokener);
for(int i=0; i<(neuArray.length()); i++)
{
JSONObject json_obj_neu_sip = neuArray.getJSONObject(i);
wartSip = json_obj_neu_sip.getString("mit");
wartSip2 = json_obj_neu_sip.getString("tua");
akkSip = json_obj_neu_sip.getString("ptar");
ajjSip = json_obj_neu_sip.getString("ptar2");
}
...
我使用這個代碼,它使用方法,在一個片段。當我嘗試啓動它時,neuTokener
的值是「錯誤!」。從我的方法,當它落在趕上StringBuilder
。但我不知道它爲什麼會捕捉到這個東西,我在不同的地方使用它並且沒有問題。 我真的很感謝幫助,在此先感謝。
你在主線程上調用'httpGetConnection'嗎? – Apoorv
Rly另一個NetworkOnMainThreadException ?? –
@ A.S。是的,就像隔天一樣。這不像是有一個搜索引擎,你可以搜索錯誤,正在拋出。 – Ahmad