2015-10-24 3 views
0

Я пытаюсь восстановить данные json с сервера. Я использую HttpURLConnection для подключения к серверу.Не удалось получить все данные в ответе JSON с сервера

Я получаю код ответа как 200, и я также получаю некоторые данные. Но после некоторых данных я получаю стоимость мусора.

Вот мой код:

private List<Member> downloadUrl(String myUrl) throws IOException, JSONException { 
    InputStream is = null; 
    // Only display the first 500 characters of the retrieved 
    // web page content. 
    int len = 50537; 

    try { 
     URL url = new URL(myUrl); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(10000 /* milliseconds */); 
     conn.setConnectTimeout(15000 /* milliseconds */); 
     conn.setRequestMethod("GET"); 
     conn.setDoInput(true); 
     // Starts the query 
     conn.connect(); 
     int response = conn.getResponseCode(); 
     Log.d("RESPONSE CODE", "The response is: " + response);  

     is = conn.getInputStream(); 

     // Read the stream 
     byte[] b = new byte[1024]; 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

     while (is.read(b) != -1) 
      baos.write(b); 

     Log.d("baos", "BAOS" + baos); 
     String JSONResp = new String(baos.toByteArray()); 


     Log.d("JSONR", "JSONR" + JSONResp); 
     Log.d("JSONR", "JSONR LENGTH" + JSONResp.length()); 
     JSONArray arr = new JSONArray(JSONResp); // <---- EXCEPTION 
     for (int i=0; i < 5; i++) { 
      Members.addMember(arr.getJSONObject(i)); 
      Log.d("MEMBER", "MEMBER" + arr.getJSONObject(i)); 
     } 


     Log.d("MEMBERS", "members error"); 
     return Members.getMembers(); 

    } finally { 
     if (is != null) { 
      is.close(); 
     } 
    } 
} 
+0

Что такое 'мусор значение' вы получите в конце концов? –

+0

некоторые алмазные символы – user007

ответ

1
InputStream is = null; 
    try { 
     is = conn.getInputStream(); 
     int ch; 
     StringBuffer sb = new StringBuffer(); 
     while ((ch = is.read()) != -1) { 
     sb.append((char) ch); 
     } 
     return sb.toString(); 
    } catch (IOException e) { 
     throw e; 
    } finally { 
     if (is != null) { 
     is.close(); 
     } 
    } 
+0

данные, которые я получаю, очень большие. этот метод также не может получить все данные за один раз – user007

+0

Это не зависит от данных, что приходит в вашем ответе – Rahul

+0

У меня есть около 250 объектов json в json-массиве, и я получаю около 30 в ответном сообщении к неполному массиву json он бросает jsonexception во время разбора. – user007

Смежные вопросы