gpt4 book ai didi

java - SOAP - 非常大的 XML 响应 - OutOfMemoryError

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:05 25 4
gpt4 key购买 nike

首先,这个问题看起来像 Very large SOAP response - Android- out of memory error 主题。由于本人英文较弱,且题型相似,为了便于理解,抄了一些语句段落。

我有一个应用程序,我需要通过对 Web 服务的 SOAP 调用来下载大量数据。然后将响应发送到显示 XML 文件的函数。

数据超过 11MB,我每次都有一个java.lang.OutOfMemoryError

修改网络服务以提供较少量的数据不是一种选择。

我使用“Http 请求”来获取数据。我知道:我的请求很好,soapUi 和 wireshark 返回了预期的响应。

但是我的 AVD 无法通过这条线

HttpResponse httpResponse = httpClient.execute(httpPost);

经过几分钟的工作(在此期间 wireshark 恢复了一些预期的查询),出现了这个错误

 Out of memory on a 16705124-byte allocation.

我尝试将SD卡容量升级到20GB,还是报错。

解析 httpResponse 可能是下一步,是否可以在 HttpResponse 接收数据时通过 exmple 将其分成几个部分来解析?

你有什么想法吗?

谢谢,杂乱无章

最佳答案

谢谢 Graeme,以字节流方式打开连接。如果对某人有帮助,这是我的源代码

        //Make a temporary file to save data
File responseFile = File.createTempFile("SOAP", "xml", context.getFilesDir());
int nbCharRead = 0; int i=0; int totalRead = 0;

//Send query
OutputStream outputS = url_Connection.getOutputStream();
Writer w_out = new OutputStreamWriter(outputS);
w_out.write(webServiceXml);
w_out.flush();
w_out.close();


//Buffers
BufferedReader bufReader = new BufferedReader(new InputStreamReader(url_Connection.getInputStream()));
BufferedWriter bufWriter = new BufferedWriter(new FileWriter(responseFile));
char[] buffer = new char[10000];



while((nbCharRead = bufReader.read(buffer, 0, 10000)) != -1)
{
totalRead += nbCharRead;
Log.d("Test InputStream", "i: " + i++ +" - " + nbCharRead + " -> " + totalRead);
bufWriter.write(buffer, 0, nbCharRead );
}

if(bufWriter != null)
{
bufWriter.flush();
bufWriter.close();
}


Log.w(MsgLog, "--- Stream Got--- ; Total : " + totalRead);

关于java - SOAP - 非常大的 XML 响应 - OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926620/

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