0

タイトルが示すように、私はアンドロイドで httpget を使用しています。ただし、不完全なデータが返されます。この呼び出しは、およそ 99kb の json データを返しています。ただし、私の関数は 38kb しか生成せず、json 文字列は不完全です。

エラーがまったく発生していないため、エラーが発生した理由を理解するのは困難です。

サイズの測定は、ブラウザーで呼び出しを行い、出力をファイルに保存し、関数からの出力で同じことを行うだけです。

URLを取得するコードは次のとおりです。

public String getpage2(){
    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(this.request);
    HttpResponse response = null;
    try {
        response = client.execute(request);
    } catch (ClientProtocolException e2) {
        // TODO Auto-generated catch block
        Log.e("getpage",e2.toString());
        e2.printStackTrace();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        Log.e("getpage",e2.toString());
        e2.printStackTrace();
    }

    String html = "";
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null ; ) {
            builder.append(line).append("\n");
        }
        html = builder.toString();
        Log.d("nr",builder.capacity() + "/" + builder.length());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("getpage",e.toString());
        e.printStackTrace();
    }finally{

    }
    return html;
}

任意の助けをいただければ幸いです。私は途方に暮れています...

4

1 に答える 1

1

データをそのままコピーするためにこれを試すことができ、EOL の欠落を心配する必要はありません。

StringBuilder sb = new StringBuilder();
int len;
char[] buf = new char[20];
while((len = reader.read(buf)) != -1) {
    sb.append(buf, 0, len);
}
于 2013-03-29T02:10:06.370 に答える