add header support

This commit is contained in:
Looly 2020-05-26 00:53:59 +08:00
parent ac314bb14a
commit 0543cec440
3 changed files with 47 additions and 14 deletions

View File

@ -17,6 +17,7 @@
* 【core 】 支持BeanUtil.toBean(object, Map.class)转换issue#I1I4HC@Gitee * 【core 】 支持BeanUtil.toBean(object, Map.class)转换issue#I1I4HC@Gitee
* 【core 】 MapUtil和CollUtil增加clear方法issue#I1I4HC@Gitee * 【core 】 MapUtil和CollUtil增加clear方法issue#I1I4HC@Gitee
* 【core 】 增加FontUtil可定义pressText是否从中间issue#I1HSWU@Gitee * 【core 】 增加FontUtil可定义pressText是否从中间issue#I1HSWU@Gitee
* 【core 】 SoapClient支持自定义请求头issue#I1I0AO@Gitee
### Bug修复 ### Bug修复
* 【core 】 修复SimpleCache死锁问题issue#I1HOKB@Gitee * 【core 】 修复SimpleCache死锁问题issue#I1HOKB@Gitee

View File

@ -271,7 +271,7 @@ public abstract class HttpBase<T> {
*/ */
public T charset(String charset) { public T charset(String charset) {
if(StrUtil.isNotBlank(charset)){ if(StrUtil.isNotBlank(charset)){
this.charset = Charset.forName(charset); charset(Charset.forName(charset));
} }
return (T) this; return (T) this;
} }

View File

@ -3,10 +3,10 @@ package cn.hutool.http.webservice;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.XmlUtil; import cn.hutool.core.util.XmlUtil;
import cn.hutool.http.HttpBase;
import cn.hutool.http.HttpGlobalConfig; import cn.hutool.http.HttpGlobalConfig;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
@ -51,7 +51,7 @@ import java.util.Map.Entry;
* @author looly * @author looly
* @since 4.5.4 * @since 4.5.4
*/ */
public class SoapClient { public class SoapClient extends HttpBase<SoapClient> {
/** /**
* XML消息体的Content-Type * XML消息体的Content-Type
@ -62,10 +62,7 @@ public class SoapClient {
* 请求的URL地址 * 请求的URL地址
*/ */
private String url; private String url;
/**
* 编码
*/
private Charset charset = CharsetUtil.CHARSET_UTF_8;
/** /**
* 默认连接超时 * 默认连接超时
*/ */
@ -203,11 +200,17 @@ public class SoapClient {
* *
* @param charset 编码 * @param charset 编码
* @return this * @return this
* @see #charset(Charset)
*/ */
public SoapClient setCharset(Charset charset) { public SoapClient setCharset(Charset charset) {
this.charset = charset; return this.charset(charset);
}
@Override
public SoapClient charset(Charset charset) {
super.charset(charset);
try { try {
this.message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, this.charset.toString()); this.message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, this.charset());
this.message.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true"); this.message.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
} catch (SOAPException e) { } catch (SOAPException e) {
// ignore // ignore
@ -228,17 +231,45 @@ public class SoapClient {
} }
/** /**
* 设置头信息 * 设置SOAP头信息
*
* @param name 头信息标签名
* @return this
* @deprecated 为了和Http Hrader区分请使用{@link #setSOAPHeader(QName)}
*/
@Deprecated
public SoapClient setHeader(QName name) {
return setSOAPHeader(name, null, null, null, null);
}
/**
* 设置SOAP头信息
* *
* @param name 头信息标签名 * @param name 头信息标签名
* @return this * @return this
*/ */
public SoapClient setHeader(QName name) { public SoapClient setSOAPHeader(QName name) {
return setHeader(name, null, null, null, null); return setSOAPHeader(name, null, null, null, null);
} }
/** /**
* 设置头信息 * 设置SOAP头信息
*
* @param name 头信息标签名
* @param actorURI 中间的消息接收者
* @param roleUri Role的URI
* @param mustUnderstand 标题项对于要对其进行处理的接收者来说是强制的还是可选的
* @param relay relay属性
* @return this
* @deprecated 为了和Http Hrader区分请使用{@link #setSOAPHeader(QName, String, String, Boolean, Boolean)}
*/
@Deprecated
public SoapClient setHeader(QName name, String actorURI, String roleUri, Boolean mustUnderstand, Boolean relay) {
return setSOAPHeader(name, actorURI, roleUri, mustUnderstand, relay);
}
/**
* 设置SOAP头信息
* *
* @param name 头信息标签名 * @param name 头信息标签名
* @param actorURI 中间的消息接收者 * @param actorURI 中间的消息接收者
@ -247,7 +278,7 @@ public class SoapClient {
* @param relay relay属性 * @param relay relay属性
* @return this * @return this
*/ */
public SoapClient setHeader(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; SOAPHeader header;
SOAPHeaderElement ele; SOAPHeaderElement ele;
try { try {
@ -548,6 +579,7 @@ public class SoapClient {
.setConnectionTimeout(this.connectionTimeout) .setConnectionTimeout(this.connectionTimeout)
.setReadTimeout(this.readTimeout) .setReadTimeout(this.readTimeout)
.contentType(getXmlContentType())// .contentType(getXmlContentType())//
.header(this.headers())
.body(getMsgStr(false))// .body(getMsgStr(false))//
.executeAsync(); .executeAsync();
} }