0

У меня есть данные от reader.readLine(). Но он не входит в цикл while. Строка return 'json' имеет значение null.Android HttpurlConnection считывает данные с помощью BufferedReader, но получает значение null после добавления его в StringBuilder

Кто-то, пожалуйста, помогите мне решить проблему. я уже много пробовал для правильного решения.

try {    
    URL urL = new URL(url); 
    urlConnection = (HttpURLConnection) urL.openConnection(); 
    urlConnection.setRequestMethod("POST"); 
    urlConnection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    urlConnection.addRequestProperty("Accept", "application/json"); 
    urlConnection.setConnectTimeout(10000); 
    urlConnection.setReadTimeout(15000); 
    urlConnection.setDoInput(true); 
    urlConnection.setDoOutput(true); 
    Uri.Builder builder = new Uri.Builder() 
      .appendQueryParameter("PackageName", packagename); 

    String query = builder.build().getEncodedQuery(); 

    OutputStream os = urlConnection.getOutputStream(); 
    BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os, "UTF-8")); 
    writer.write(query); 
    writer.flush(); 
    writer.close(); 
    os.close(); 

    urlConnection.connect(); 

    InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    StringBuffer result = new StringBuffer(); 

    Log.e("READER","....."+reader.readLine()); 
    String line=reader.readLine(); 
    while (line != null) { 
     result.append(line).append('\n'); 
    } 
    json=result.toString(); 
    in.close(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    urlConnection.disconnect(); 
} 
Log.e("RESULT","...."+json); 
return json; 
+0

Я думаю, что ваш код включает 'попробовать {' ___ смотрите чуть выше фрагменте кода вы поделились ___ –

+1

. Блок try не закрыт перед заявлением catch –

+1

Atlast Я получил его. Проблема была в строке Log.e («READER», «.....» + reader.readLine()); Строка line = reader.readLine(); Я изменил приведенные выше строки как Строка line = reader.readLine(); Log.e («READER», «.....» + line); Теперь его рабочий тон ... Спасибо всем за поддержку .. :) –

ответ

0

Удалить в журнале дополнительные reader.readLine(),

Log.e("READER","....." + reader.readLine()); 

Попробуйте этот код,

Log.e("ResponseCode", "" + urlConnection.getResponseCode()); 

InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
StringBuffer result = new StringBuffer(); 

String line; 
while ((line = reader.readLine()) != null) { 
    result.append(line); 
} 
json = result.toString(); 
in.close(); 
+0

Спасибо за предложение. Я уже делаю то же самое. Но все та же проблема. :( –

+0

Убедитесь, что вы получаете данные из API. Попробуйте его в браузере. –

+0

Да, данные поступают из API –

0

ли это его основной, возможно, вы пропустили его:

json=result.toString(); 
    in.close(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    urlConnection.disconnect(); 
} 
Log.e("RESULT","...."+json); 
if (json!=null) 
return json; 

It пропустит null p ointer исключение:

+0

Нет, это не решение моей проблемы –

0

Если все, что вы делаете, загрузив jsonString из API, это должно сортировать вас:

String jsonString = ""; 

    try { 

     URL mURL = new URL(yourURL); 

     HttpURLConnection mHttpURLConnection; 
     mHttpURLConnection = (HttpURLConnection)mURL.openConnection(); 

     mHttpURLConnection.setDoInput(true); 

     mHttpURLConnection.connect(); 

     InputStream mInputStream = mHttpURLConnection.getInputStream(); 

     int i = 0; 
     while ((i = mInputStream.read()) != -1) { 
      jsonString += (char) i; 
     } 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 

    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
Log.e("JSON","Json String received: " + jsonString);