【问题标题】:Writing SOAP XML response to file将 SOAP XML 响应写入文件
【发布时间】:2017-10-09 14:14:42
【问题描述】:

我正在尝试访问 SOAP 服务以从 URL 获取数据。我已经成功配置了 SOAP 服务。 我正在运行以下方法从 SOAP 服务获取响应

soapResponse = soapConnection.call(SoapMsg, endPoint);
soapResponse.writeTo(fileName); 

但我在收到响应时出现 OutOfMemory 异常

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3236) ~[na:1.8.0_131]
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118) ~[na:1.8.0_131]
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) ~[na:1.8.0_131]
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153) ~[na:1.8.0_131]
    at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.readFully(HttpSOAPConnection.java:553) ~[na:1.8.0_131]
    at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:318) ~[na:1.8.0_131]
    at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:145) ~[na:1.8.0_131]

因此,我想通过在检索整个响应之前将响应分成更小的块来写入文件。知道如何以这种方式配置它吗?

提前致谢。

【问题讨论】:

    标签: java xml web-services soap


    【解决方案1】:

    您可能需要增加堆内存 Increase heap size in Java

    或尝试流式传输响应。

    connection.call(SoapMsg, endPoint).writeTo(new FileOutputStream(new File(fileName)));

    不确定这个是否可行,因为我通常使用其他 API。

    也许您可以尝试通过更新 SoapMsg 来减少返回的数据量。也许分页是一种选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多