hutools工具包发送soap请求,参数<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.base.app.core.a4.asiainfo.com"> <soapenv:Header/> <soapenv:Body> <ser:UpdateAppAcctServices soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <RequestInfo xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><![CDATA[<?xml version='1.0' encoding='UTF-8'?> <USERMODIFYREQ> <HEAD> <CODE></CODE> <SID></SID> <TIMESTAMP>20230803</TIMESTAMP> <SERVICEID>GXCTSPYYT</SERVICEID> </HEAD> <BODY> <OPERATORID>admin</OPERATORID> <OPERATORPWD></OPERATORPWD> <MODIFYMODE>add</MODIFYMODE> //add、change、delete <USERINFO> <USERID>345613027</USERID> <LOGINNO>345613027</LOGINNO> <USERNAME>王踪</USERNAME> <ORGID>1000</ORGID> <EMAIL></EMAIL> <MOBILE>18154617121</MOBILE>//对应TELENO <PASSWORD>123456</PASSWORD> <STATUS>1</STATUS> <EFFECTDATE>2023-04-12 09:34:22</EFFECTDATE> <EXPIREDATE>2099-04-12 09:34:22</EXPIREDATE> <REMARK></REMARK> </USERINFO> </BODY> </USERMODIFYREQ>]]></RequestInfo> </ser:UpdateAppAcctServices> </soapenv:Body> </soapenv:Envelope> ,怎么写
时间: 2025-07-09 12:15:20 AIGC 浏览: 29
在使用 Hutool 工具包发送 SOAP 请求时,可以通过 `HttpUtil` 类来构造 HTTP 请求,并手动构建符合 SOAP 协议的 XML 数据作为请求体。SOAP 消息通常由 Envelope、Header(可选)、Body 和 Fault(可选)组成,且需通过特定的 HTTP Header 告知服务器内容格式为 XML。
以下是一个示例流程:
### 构建自定义 SOAP Envelope XML
首先需要构造一个完整的 SOAP Envelope,其中包含指定的 Body 内容,例如调用某个 Web 服务的方法并传递参数。
```xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.com/ns">
<soapenv:Header/>
<soapenv:Body>
<ns:YourMethod>
<!--自定义参数-->
<param1>value1</param1>
<param2>value2</param2>
</ns:YourMethod>
</soapenv:Body>
</soapenv:Envelope>
```
### 使用 Hutool 发送 SOAP 请求
Hutool 的 `HttpUtil` 支持发送 POST 请求,并允许设置请求头和请求体。
```java
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
public class SoapClient {
public static void main(String[] args) {
String soapEndpointUrl = "http://example.com/your-soap-endpoint";
String soapXml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns=\"http://example.com/ns\">\n" +
" <soapenv:Header/>\n" +
" <soapenv:Body>\n" +
" <ns:YourMethod>\n" +
" <param1>value1</param1>\n" +
" <param2>value2</param2>\n" +
" </ns:YourMethod>\n" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>";
String response = HttpRequest.post(soapEndpointUrl)
.header("Content-Type", "text/xml; charset=utf-8")
.header("SOAPAction", "\"http://example.com/ns/YourMethod\"") // 可根据实际 WSDL 配置
.body(soapXml)
.execute()
.body();
System.out.println(response);
}
}
```
### 注意事项
- **SOAPAction** 头部字段在某些 SOAP 服务中是必须的,其值通常是命名空间与方法名的组合。
- 所有 XML 标签需正确闭合,避免格式错误导致服务端解析失败。
- 如果服务要求认证或使用 HTTPS,还需添加相应的 Header 或启用 SSL 支持。
- 可通过 `HttpResponse` 获取响应状态码及原始 XML 返回内容,便于后续解析处理。
阅读全文
相关推荐




















