У меня есть исходный код Java Java:
private void getDataFromServer(String url){
InputStream is = null;
JSONObject json = null;
String output = "";
URL _url;
URLConnection urlConnection = null;
try {
_url = new URL(url);
urlConnection = _url.openConnection();
}
catch (MalformedURLException e) {
Log.e("JSON Parser", "Error due to a malformed URL " + e.toString());
}
catch (IOException e) {
Log.e("JSON Parser", "IO error " + e.toString());
}
try {
urlConnection.setRequestProperty("Accept-Charset", "UTF-8");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
is = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder(is.available());
String line;
while ((line = reader.readLine()) != null) {
total.append(line).append('\n');
}
output = total.toString();
}
catch (IOException e) {
Log.e("JSON Parser", "IO error " + e.toString());
}
// finally{
// urlConnection.disconnect();
// }
try {
json = new JSONObject(output);
}
catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
}
и URL = Http: //localhost/API/getdata.php
вернусь :
[
{
"id": "1",
"nama_kab": "KAB. BOGOR",
"jml_miskin": "479",
"presentase_miskin": "8.91",
"indeks_kedalaman": "1.27",
"indeks_keparahan": "0.29",
"garis_kemiskinan": "280312",
"latitude": "-6.59504",
"longitude": "106.817"}
]
я использую отладку и точку останова, она всегда останавливается и выдает ошибку, когда:
is = new BufferedInputStream(urlConnection.getInputStream());
Я попытался добавить кодировку и любой другой стековпоток, но все равно ошибка.
Помогите мне, пожалуйста
это мой манифест:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Во-первых, ответ не является объектом (JSONObject
), но массив, так что вы должны сделать ваш разбор соответственно (используйте JSONArray
). Во-вторых, Content-Type
заголовок, отправленный сервером, клиенты используют Accept
заголовок, чтобы указать, какие данные они ожидают.
Других решений пока нет …