Прежде всего у меня есть две вещи, которые необходимо ваше внимание:HttpURLConnection работает на уровне ИЗА <11, не работает на уровне ИЗА> 11 на андроид
1) Я попробовал этот код на телефонах с уровнем апи ниже 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 another NetworkOnMainThreadException ?? –
@ A.S. Да, как каждый день. Это не похоже на поисковую систему, где вы можете искать ошибку, которая бросается. – Ahmad