java对接webservice接口

xml格式的接口文档,看的我头大,然后发现cxf这个工具,总算是解决了一些问题。
https://cxf.apache.org/download.html
在这里插入图片描述
解压好之后去bin目录下,打开cmd窗口
使用wdsl地址生成所有我们可能用得上的东西,一句命令即可:

wsdl2java -d D:/src -all wsdl地址

稍等一下,我们就可以在我们刚指定的目录下看到生成的所有文件了
在这里插入图片描述
这里的Client就是我们要用来调用接口的类了
在这里插入图片描述
打开来看里面已经生成了测试代码,我们只需要进行稍加修改即可使用,因为我这边有验证所以需要在header中添加认证,别的可能是用户名密码什么的,大致都差不多,我这里就是一个密匙。这里添加密匙需要一个拦截器来实现添加头部认证的,这里我们要在maven中添加相关的依赖

<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.4.2</version>
        </dependency>
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 ClientAuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> {

	private static final String PASSWORD = "";
	
    public ClientAuthInterceptor() {
        //准备发送阶段
        super(Phase.PREPARE_SEND);
    }

    public void handleMessage(SoapMessage message) throws Fault {
        List<Header> headers = message.getHeaders();

        Document doc = DOMUtils.createDocument();

        Element auth = doc.createElement("Security");

        auth.setTextContent(PASSWORD);

        headers.add(new Header(new QName(""), auth));
    }
}

这边实现了拦截器,我们还需要把拦截器添加到Client,也就是这两行代码
在这里插入图片描述
然后我们启动Client就可以看到可以正常访问接口了

借鉴文章:文章地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值