文章目录
调用webservice接口
<!--依赖-->
<!--cxf webservice-->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.4.1</version>
</dependency>
import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import java.util.List;
/**
* 工具类
*/
public class ClientLoginInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
private String username;
private String password;
public ClientLoginInterceptor() {
super(Phase.PREPARE_SEND);
}
public ClientLoginInterceptor(String username, String password) {
//super();
super(Phase.PREPARE_SEND);
this.username = username;
this.password = password;
}
//@Override
public void handleMessage(SoapMessage soap) throws Fault {
List<Header> headers = soap.getHeaders();
Document doc = DOMUtils.createDocument();
// 添加用户名信息
Element userElement = doc.createElement("tns:user");
userElement.setTextContent(this.username);
// 添加密码信息
Element pwdElement = doc.createElement("tns:password");
pwdElement.setTextContent(this.password);
// 创建消息头节点
Element root = doc.createElementNS("http://sys.webservice.client"
, "tns:RequestSOAPHeader");
root.appendChild(userElement);
root.appendChild(pwdElement);
QName qname = new QName("RequestSOAPHeader");
SoapHeader head = new SoapHeader(qname, root);
headers.add(head);
}
}
public void test(JSONObject jsonStr){
// jsonStr = toJsonStr();
//封装接口上下文
SysSynchroSetOrgContext context = new SysSynchroSetOrgContext();
context.setOrgJsonData(jsonStr.toString());
String oaUrl = getOAUrl();
String url = demoUrl+"sys/webservice/demoservice?wsdl";
String method = "demo";
Object a = null;
try {
a = getNewWebInstance(url, method, "http://in.webservice.organization.sys.kmss.demo.com/", context);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 调用webservice
* @param wsUrl 接口路径
* @param method 接口方法
* @param qname 空间名
* @param jsonStr 传入参数
* @return
* @throws Exception
*/
public Object getNewWebInstance(String wsUrl, String method, String qname, String jsonStr) throws Exception {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
// 需要密码的情况需要加上用户名和密码
QName aname = new QName(qname, method);
Client client = dcf.createClient(wsUrl);
/*加密码验证,需要这个*/
/*账号、密码*/
client.getOutInterceptors().add(new ClientLoginInterceptor("noAuth", null));
Object[] res = null;
Object[] objects = new Object[0];
try {
// invoke("方法名",参数1,参数2,参数3....);
objects = client.invoke(method,jsonStr);
log.info("返回数据:" + objects[0]);
return objects[0];
} catch (java.lang.Exception e) {
e.printStackTrace();
return null;
}
}
版权声明:本文为m0_48668242原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。