java wsimport 生成Webservice客户端401认证

概述
wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦。

先看两张截图:

使用浏览器打开webservice出现的界面:
使用浏览器打开webservice出现的界面

使用wsimport生成webservice客户端出现401错误:
使用wsimport生成webservice客户端出现401错误
需用到的命令参数如下:

    1. -d <directory>      在指定的目录生成class文件
    2. -p <pkg>      指定生成文件的包结构
    3. -Xauthfile <filepath>      在格式文件进行授权信息
    4. -keep <url>      在生成class文件,或者jar包时,同时保留java源文件  

第一步 创建wsimport生成ws命令行

wsimport -d D:\JAVA\wrokspace\您的项目\src -p com.xx.web -Xauthfile D:\JAVA\wrokspace\您的项目\authfile.txt -keep http://xxxx:9000/Service.asmx?wsdl
1、通过-d命令指定您的java项目src路径
2、通过-p命令指定需生成包结构(指定之后会自动生成)
3、通过-Xauthfile命令指定访问带有401认证的webservice授权文件(文件路径或文件名可以随意更改 特别简单,请放心)。
4、通过-keep命令指定webservice路径

第二步 创建授权文件(authfile.txt)

http://test:123456@192.168.110.21:9000/Service.asmx?wsdl

第三步 在MyEclipse工具中找到对应的项目右键刷新
右键刷新项目
备注:生成完成之后项目可能会出现错误,将错误稍作修改至没有异常即可。

第四步 尝试调用webservice接口函数并运行项目
这里写图片描述
出现了 Server returned HTTP response code: 401异常,虽然ws成功导入到项目中了但是项目访问接口的时候没有进行身份认证导致出现该异常。我已经在论坛里面找到这个方法的解决方案,
原链接(参考#10):http://bbs.csdn.net/topics/370023850

import java.net.Authenticator;
import java.net.PasswordAuthentication;

 public class MyAuthenticator extends Authenticator {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("用户名", "密码".toCharArray());
    }
}

调用的时候只需要在调用接口之前调用执行该方法即可:

Authenticator.setDefault(new MyAuthenticator());

操作成功

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值