1

文字列の問題があります。URLからJSONデータを受信するために以下のコードを使用しました。コードは正常に機能していますが、問題は、JSON値の半分しか取得されていない完全なデータを取得していないことです。これには理由があります。そうであれば、この問題を解決する方法を意味します。JSON文字列は非常に大きい

            DefaultHttpClient http_client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(urls[0]);
            HttpResponse response = http_client.execute(httpGet);

            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            HttpEntity entity = response.getEntity();

            InputStream in = entity.getContent();
            StringBuffer out = new StringBuffer();
            byte[] b = new byte[4096];
            int n =  in.read(b);
            while(n>0){
                out.append(new String(b, 0, n));
                n = in.read(b);
            }

            String resultdata = out.toString();
            Log.d("Out data",resultdata);
4

4 に答える 4

2

BufferedReaderを使用してこのようなデータを取得してみてください

    String line="";
   BufferedReader rd = new BufferedReader(new InputStreamReader(in));
                // Read response 
     while ((line = rd.readLine()) != null) { 
               total.append(line); 
            }
   String jsonString=total.toString();
于 2013-03-15T05:54:06.293 に答える
0
InputStream is = entity.getContent();
BufferedReader out = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = out.readLine()) != null) {sb.append(line + "\n");
            }
is.close();
String json = sb.toString();

これを試して

于 2013-03-15T06:00:12.970 に答える
0

この行を削除する必要があります

int n =  in.read(b);

そして追加

  int n=0;

    while ((n= in.read(b)) != null)
于 2013-03-15T06:02:28.073 に答える
0

これを試してください、

 public static JSONObject getJson(String url){

    InputStream is = null;
    String result = "";
    JSONObject jsonObject = null;

    // HTTP
    try {           
        HttpClient httpclient = new DefaultHttpClient(); // for port 80 requests!
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch(Exception e) {
        return null;
    }

    // Read response to string
    try {           
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();             
    } catch(Exception e) {
        return null;
    }

    // Convert string to object
    try {
        jsonObject = new JSONObject(result);            
    } catch(JSONException e) {
        return null;
    }

    return jsonObject;

}}
于 2013-03-15T06:05:23.360 に答える