You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SOAP请求体中发送列表?解决空指针异常问题

如何正确在SOAP请求体中发送List类型的参数?

从你的代码和SOAP请求来看,问题出在请求体结构和Java类定义不匹配,导致Web服务无法正确解析列表参数,进而抛出空指针异常。

当前请求的问题

你现在的SOAP请求把individualRequest作为一个包含<Long>子标签的容器,但你的Java类里individualRequest是一个直接存储Long值的列表(通过@XmlElement(type = Long.class)标注),没有额外的层级包装。这种不匹配会让服务端无法识别列表元素,导致individualRequest列表未被初始化,最终触发空指针。

正确的SOAP请求格式

根据你的Java类定义,正确的请求应该是在ns3:retrieveIndividualsBOBStatus节点下,直接添加多个individualRequest标签,每个标签的内容就是Long类型的数值:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header/>
  <env:Body>
    <ns3:retrieveIndividualsBOBStatus xmlns="" xmlns:ns3="http://webservice.com/">
      <!-- 单个列表元素 -->
      <individualRequest>710039</individualRequest>
      <!-- 如果有多个元素,继续添加即可 -->
      <individualRequest>710040</individualRequest>
      <individualRequest>710041</individualRequest>
    </ns3:retrieveIndividualsBOBStatus>
  </env:Body>
</env:Envelope>

为什么这样有效?

你的Java类中,@XmlElement(type = Long.class)标注在List<Long>字段上,这告诉JAXB(SOAP服务常用的XML绑定框架):这个列表不需要额外的包装节点,每个列表元素直接以字段名individualRequest作为标签,内容就是Long值。服务端接收到这种结构后,就能正确把多个individualRequest标签解析成List<Long>对象,避免空指针异常。

额外说明(可选)

如果你希望用包裹式的结构(比如用一个父节点包裹所有列表元素),可以修改Java类,添加@XmlElementWrapper注解:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "retrieveIndividualsBOBStatus", propOrder = { "individualRequest" })
public class RetrieveIndividualsBOBStatus {
    @XmlElementWrapper(name = "individualRequests") // 新增包裹节点
    @XmlElement(type = Long.class, name = "individualRequest")
    protected List<Long> individualRequest;
    // ...
}

对应的SOAP请求就会变成:

<ns3:retrieveIndividualsBOBStatus xmlns="" xmlns:ns3="http://webservice.com/">
  <individualRequests>
    <individualRequest>710039</individualRequest>
    <individualRequest>710040</individualRequest>
  </individualRequests>
</ns3:retrieveIndividualsBOBStatus>

但如果不能修改服务端的Java类,就采用前面第一种请求格式即可。

内容的提问来源于stack exchange,提问作者landscape1250

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:29:49