Вы не конвертируете один байт и не конвертируете в символ, как это:
char current = (char) data;
Ваша строка result
будет содержать много странных символов
Вместо этого вы переноситеот InputStreamReader
до BufferedReader
, читайте построчно и собирайте JSON
.
Еще один более простой способ - использовать JSONObject
для чтения вашего потока:
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject)jsonParser.parse(
new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
Затем измените ваш AsyncTask
, чтобы он возвращал JSONObject
напрямую
public class DownloadTask extends AsyncTask<String, Void, JSONObject> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in, "UTF-8");
JSONParser jsonParser = new JSONParser();
return (JSONObject)jsonParser.parse(reader);;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(JSONObject result) {
}
}