我爱布朗熊 2024-11-15 19:05 采纳率: 73%
浏览 71

Unmarshalling Error: 意外的元素 (uri:"http://service.rb.his.hls.com", local:"addPatientCard")

如下所示,借助Hutool工具类的SoapClient对象发送webservice请求

 HashMap<String, Object> map = new HashMap<>();
  map.put("arg0", "<![CDATA[" + JSON.toJSONString(resources) + "]]>");
    SoapClient soapClient = SoapClient.create(address)
                //请求方法,命名空间
                .setMethod("addPatientCard", NAME_SPACE_URI)
                .setParams(map);
String responseAll = soapClient.send(true);

但是响应的内容一直提示,一直不清楚为什么
目前我确定的是webservice页面的targetNamespace的值确实是http://service.rb.his.hls.com/

img

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Client</faultcode>
      <faultstring>Unmarshalling Error: 意外的元素 (uri:"http://service.rb.his.hls.com", local:"addPatientCard")。所需元素为&lt;{}arg0&gt; </faultstring>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

目前能确定的是,对应的webservice的接口是没什么问题的,下图是使用soupUI做的请求,是可以正确的响应的,但是一直找不出为什么在Java代码中无法通信

img

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的错误信息来看,问题似乎在于你在发送SOAP请求时提供的参数格式不正确。错误信息提示:"Unmarshalling Error: 意外的元素 (uri:"http://service.rb.his.hls.com", local:"addPatientCard")",这意味着服务器在解析请求时遇到了意外的元素“addPatientCard”。这可能是由于你发送的请求参数格式与服务器期望的格式不匹配。

    根据你的描述,你在发送SOAP请求时使用了Hutool工具库的SoapClient对象,并且将参数封装在了一个HashMap对象中。然而,从你提供的SOAP请求和响应的示例来看,你的请求可能缺少了必要的命名空间前缀和元素结构。在SOAP请求中,每个元素都需要有正确的命名空间前缀和元素结构,以便服务器能够正确地解析请求。

    为了解决这个问题,你可以尝试以下几个步骤:

    1. 确保你的SOAP请求的结构和格式正确。参考使用soupUI生成的请求示例,确保你的请求包含了正确的命名空间前缀和元素结构。
    2. 检查你的Java代码中使用的SoapClient对象的设置是否正确。确保你设置了正确的方法名(如"addPatientCard")和命名空间URI(如"http://service.rb.his.hls.com")。此外,检查你是否正确设置了请求参数,包括必要的命名空间前缀和元素结构。
    3. 确保你发送的请求参数与服务器期望的参数格式一致。根据服务器端的WSDL文件,确认请求参数的结构和格式,并在Java代码中按照正确的格式设置参数。

    如果你仍然遇到问题,你可以尝试使用其他工具或库来生成SOAP请求,例如Apache CXF或JAX-WS等,以确保你的请求格式正确并且与服务器兼容。此外,你还可以尝试查看服务器的日志或联系服务器提供商以获取更多关于问题的详细信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月15日