gpt4 book ai didi

Java : Json exception

转载 作者:行者123 更新时间:2023-12-02 07:44:29 24 4
gpt4 key购买 nike

我在 J2ME 工作。

我从服务器获取 json 响应,然后尝试根据我的要求解析此 json 数据。

这是我从服务器获取响应的代码:-

InputStream inputStream = null;
OutputStreamWriter out = null;
byte[] readData = new byte[50000];

String response = "no";

try {
// --- write ---
out = new OutputStreamWriter(connection.openOutputStream(), "UTF-8");
out.write(data.toString());
out.close();
// --- read ---

int responseCode = connection.getResponseCode();

if (responseCode != HttpConnection.HTTP_OK) {
throw new IOException("HTTP response code: " + responseCode);
}

inputStream = connection.openInputStream();

int actual = inputStream.read(readData);


response = new String(readData, 0, actual, "UTF-8");

return response;

}

当服务器的响应很小时,它工作正常,但如果响应很大,那么它会得到一半的响应并返回到我的另一个方法。请建议我该怎么做才能将大量数据放入我的 readDataresponse 变量中。

提前谢谢您。

最佳答案

您需要先读取所有数据(流中可能有更多数据)。

正如您所注意到的,对 InputStream.read 的调用并不能保证您填充缓冲区 (readData),它会返回它可以在以下位置读取的字节数:时间。你这边的缓冲区有多大并不重要。

您将需要读取并重新调用InputStream.read 方法来检查您是否拥有流中的所有可用数据。当没有更多数据可用时,read 方法将返回 -1

<小时/>

这是一个如何做到这一点的示例:

....

ByteArrayOutputStream bos = new ByteArrayOutputStream();

int read;
byte[] tmp = new byte[1024];
while ((read = inputStream.read(tmp)) != -1)
bos.write(tmp, 0, read);

return new String(bos.toByteArray(), "UTF-8");
<小时/>

此外,当您完成连接后,您应该对其调用close,以便系统知道您不再需要它。

关于Java : Json exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083170/

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