pom.xml中添加引用
我这边是因为与项目中的其他包冲突了,所以移除了一部分
org.apache.cxf cxf-bundle 2.7.18 org.springframework spring-asm
引用
import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
方法如下:
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.getInInterceptors().add(new LoggingInInterceptor());
factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
factoryBean.setServiceClass(ScribeWeixinServiceImpl.class);
//这里是自定义了一个SOAP请求头,继承自AbstractSoapInterceptor
RequesterHeader out = new RequesterHeader(user, password);
factoryBean.getOutInterceptors().add(out);
//这里是WebService的地址
factoryBean.setAddress(webServiceUrl);
ScribeWeixinServiceImpl impl = (ScribeWeixinServiceImpl) factoryBean.create();
//这里是直接调用方法即可
Integer wsResultXml = impl.sendMassMessage(massMessageList);
这里遇到了几个问题
1、请求时走到此处抛出异常,提示 认证错误。原因是没有加SOAP 请求头,当前请求方法已添加,具体的SOAP请求需要自己实现。
ScribeWeixinServiceImpl impl = (ScribeWeixinServiceImpl) factoryBean.create();
2、提示
XmlSchema异常之is java.lang.NoSuchMethodError: org.apache.ws.commons.schema.XmlSchemaColl
这里百度到的是因为jar包冲突了,pom.xml中添加如下引用即可解决
org.apache.ws.commons.schema XmlSchema 1.4.2 provided org.apache.ws.xmlschema xmlschema 2.2.3 pom org.apache.ws.xmlschema xmlschema-core 2.2.3
3、提示
两个类具有相同的 XML 类型名称 “{http://webService.com/}sendMassMessage”。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。
这个百度到的如下解决,在提示的两个java文件中加一行代码
, namespace = "http://namespace.thats.not.the.same.as.the.generated"
参考链接:
1、两个类具有相同的 XML 类型名称
https://www.cnblogs.com/charlottepl/p/12613358.html
2、XmlSchema异常之is java.lang.NoSuchMethodError
https://blog.csdn.net/qq_25623257/article/details/90401140?spm=1001.2014.3001.5506



