gpt4 book ai didi

java - 将大型响应正文读取为 HttpClient

转载 作者:行者123 更新时间:2023-12-02 05:44:46 26 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,我必须从服务器读取大量信息。

服务器以 JSONArray 形式发送信息,服务器端一切正常。

然而,当我尝试接收这个 JSONArray 时,问题就出现了,因为它似乎太大了,我无法接收?

我使用 HttpClient 连接到服务器,如下所示:

HttpParams httpParams = new BasicHttpParams();
int timeoutConnection = 20000;
HttpConnectionParams.setConnectionTimeout(httpParams, timeoutConnection);
int timeoutSocket = 20000;
HttpConnectionParams.setSoTimeout(httpParams, timeoutSocket);

HttpClient client = new DefaultHttpClient(httpParams);
HttpGet request = new HttpGet();
request.setURI(url);

HttpResponse response = null;
try {
response = client.execute(request);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

BufferedReader in = null;
if (response != null) {
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 100000);
}

return in;

我只是尝试使用 readLine() 方法读取 BufferedReader 中的内容,但是我得到的并不是响应的完整内容。我知道这一点是因为我尝试使用网络浏览器访问相同的内容并且它返回完整的内容。

服务器的响应在一行上(可能会影响它,我不知道)

我能够读取 4kb,但我需要读取高达 141kb(所以我还差得很远)..

我个人的猜测是我的代码中的某个地方存在大小限制。

我从 BufferedReader 中读取的内容如下:

BufferedReader in = getResponse(new URI(params[0]));
// Read from the received buffer
String s;
StringBuilder sb = new StringBuilder(10000);

if(in != null){
while ((s = in.readLine()) != null){
sb.append(s);
}
}

Log.d("问题:", sb.toString());

编辑:响应没有不同,长度始终相同

EDIT2:看来是 Log.d() 在打印长度上有限制!一开始就没有问题...抱歉!

最佳答案

在 HTTP 请求中使用压缩 JSON

查看这篇文章:http://arnab.ch/blog/2012/09/android-how-to-send-gzipped-json-in-http-request/

关于java - 将大型响应正文读取为 HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com