浏览代码

add method

Looly 5 年之前
父节点
当前提交
920b2c2802
共有 2 个文件被更改,包括 45 次插入9 次删除
  1. 1 0
      CHANGELOG.md
  2. 44 9
      hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java

+ 1 - 0
CHANGELOG.md

@@ -19,6 +19,7 @@
 * 【core   】     优化PageUtil彩虹算法(issue#1110@Github)
 * 【core   】     优化PageUtil彩虹算法(issue#1110@Github)
 * 【core   】     IoUtil增加readUtf8方法
 * 【core   】     IoUtil增加readUtf8方法
 * 【core   】     优化全局邮箱账户初始化逻辑(pr#1114@Github)
 * 【core   】     优化全局邮箱账户初始化逻辑(pr#1114@Github)
+* 【http   】     SoapClient增加addSOAPHeader方法
 
 
 ### Bug修复
 ### Bug修复
 * 【crypto 】     修复SM2验签后无法解密问题(issue#I1W0VP@Gitee)
 * 【crypto 】     修复SM2验签后无法解密问题(issue#I1W0VP@Gitee)

+ 44 - 9
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.SOAPBodyElement;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPHeader;
 import javax.xml.soap.SOAPHeaderElement;
 import javax.xml.soap.SOAPHeaderElement;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPMessage;
 import java.io.IOException;
 import java.io.IOException;
@@ -235,7 +234,7 @@ public class SoapClient extends HttpBase<SoapClient> {
 	 *
 	 *
 	 * @param name 头信息标签名
 	 * @param name 头信息标签名
 	 * @return this
 	 * @return this
-	 * @deprecated 为了和Http Hrader区分,请使用{@link #setSOAPHeader(QName)}
+	 * @deprecated 为了和Http Hrader区分,请使用{@link #addSOAPHeader(QName)}
 	 */
 	 */
 	@Deprecated
 	@Deprecated
 	public SoapClient setHeader(QName name) {
 	public SoapClient setHeader(QName name) {
@@ -247,9 +246,12 @@ public class SoapClient extends HttpBase<SoapClient> {
 	 *
 	 *
 	 * @param name 头信息标签名
 	 * @param name 头信息标签名
 	 * @return this
 	 * @return this
+	 * @deprecated 为了便于设置子节点或者value值,请使用{@link #addSOAPHeader(QName)}
 	 */
 	 */
+	@Deprecated
 	public SoapClient setSOAPHeader(QName name) {
 	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<SoapClient> {
 	 * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的
 	 * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的
 	 * @param relay          relay属性
 	 * @param relay          relay属性
 	 * @return this
 	 * @return this
-	 * @deprecated 为了和Http Hrader区分,请使用{@link #setSOAPHeader(QName, String, String, Boolean, Boolean)}
+	 * @deprecated 为了和Http Header区分,请使用{@link #addSOAPHeader(QName, String, String, Boolean, Boolean)}
 	 */
 	 */
 	@Deprecated
 	@Deprecated
 	public SoapClient setHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) {
 	public SoapClient setHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) {
@@ -277,13 +279,29 @@ public class SoapClient extends HttpBase<SoapClient> {
 	 * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的
 	 * @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的
 	 * @param relay          relay属性
 	 * @param relay          relay属性
 	 * @return this
 	 * @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) {
 	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 {
 		try {
-			header = this.message.getSOAPHeader();
-			ele = header.addHeaderElement(name);
 			if (StrUtil.isNotBlank(roleUri)) {
 			if (StrUtil.isNotBlank(roleUri)) {
 				ele.setRole(roleUri);
 				ele.setRole(roleUri);
 			}
 			}
@@ -301,7 +319,24 @@ public class SoapClient extends HttpBase<SoapClient> {
 			ele.setMustUnderstand(mustUnderstand);
 			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;
 	}
 	}
 
 
 	/**
 	/**