diff --git a/CHANGELOG.md b/CHANGELOG.md index 1608dfbca..b7b019990 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ * 【core 】 优化PageUtil彩虹算法(issue#1110@Github) * 【core 】 IoUtil增加readUtf8方法 * 【core 】 优化全局邮箱账户初始化逻辑(pr#1114@Github) +* 【http 】 SoapClient增加addSOAPHeader方法 ### Bug修复 * 【crypto 】 修复SM2验签后无法解密问题(issue#I1W0VP@Gitee) diff --git a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java index b13120f25..f8358e400 100644 --- a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java +++ b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java @@ -19,7 +19,6 @@ import javax.xml.soap.Name; import javax.xml.soap.SOAPBodyElement; import javax.xml.soap.SOAPElement; import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPHeaderElement; import javax.xml.soap.SOAPMessage; import java.io.IOException; @@ -235,7 +234,7 @@ public class SoapClient extends HttpBase { * * @param name 头信息标签名 * @return this - * @deprecated 为了和Http Hrader区分,请使用{@link #setSOAPHeader(QName)} + * @deprecated 为了和Http Hrader区分,请使用{@link #addSOAPHeader(QName)} */ @Deprecated public SoapClient setHeader(QName name) { @@ -247,9 +246,12 @@ public class SoapClient extends HttpBase { * * @param name 头信息标签名 * @return this + * @deprecated 为了便于设置子节点或者value值,请使用{@link #addSOAPHeader(QName)} */ + @Deprecated public SoapClient setSOAPHeader(QName name) { - return setSOAPHeader(name, null, null, null, null); + addSOAPHeader(name); + return this; } /** @@ -261,7 +263,7 @@ public class SoapClient extends HttpBase { * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的 * @param relay relay属性 * @return this - * @deprecated 为了和Http Hrader区分,请使用{@link #setSOAPHeader(QName, String, String, Boolean, Boolean)} + * @deprecated 为了和Http Header区分,请使用{@link #addSOAPHeader(QName, String, String, Boolean, Boolean)} */ @Deprecated public SoapClient setHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) { @@ -277,13 +279,29 @@ public class SoapClient extends HttpBase { * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的 * @param relay relay属性 * @return this + * @deprecated 为了便于设置子节点或者value值,请使用{@link #addSOAPHeader(QName, String, String, Boolean, Boolean)} */ + @Deprecated public SoapClient setSOAPHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) { - SOAPHeader header; - SOAPHeaderElement ele; + addSOAPHeader(name, actorURI, roleUri, mustUnderstand, relay); + + return this; + } + + /** + * 增加SOAP头信息,方法返回{@link SOAPHeaderElement}可以设置具体属性和子节点 + * + * @param name 头信息标签名 + * @param actorURI 中间的消息接收者 + * @param roleUri Role的URI + * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的 + * @param relay relay属性 + * @return {@link SOAPHeaderElement} + * @since 5.4.4 + */ + public SOAPHeaderElement addSOAPHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) { + final SOAPHeaderElement ele = addSOAPHeader(name); try { - header = this.message.getSOAPHeader(); - ele = header.addHeaderElement(name); if (StrUtil.isNotBlank(roleUri)) { ele.setRole(roleUri); } @@ -301,7 +319,24 @@ public class SoapClient extends HttpBase { ele.setMustUnderstand(mustUnderstand); } - return this; + return ele; + } + + /** + * 增加SOAP头信息,方法返回{@link SOAPHeaderElement}可以设置具体属性和子节点 + * + * @param name 头节点名称 + * @return {@link SOAPHeaderElement} + * @since 5.4.4 + */ + public SOAPHeaderElement addSOAPHeader(QName name){ + SOAPHeaderElement ele; + try { + ele = this.message.getSOAPHeader().addHeaderElement(name); + } catch (SOAPException e) { + throw new SoapRuntimeException(e); + } + return ele; } /**