JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解
作者:liness0713 发布时间:2023-11-14 00:27:55
概述
wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦。
先看两张截图:
使用浏览器打开webservice出现的界面:
使用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());
终于搞定了
直接用HttpURLConnection是不行的,这个默认只是80端口。
最后是用 Java.Net的Authenticator类 把Username和Password直接投过去(他之后对位流的处理遵守http的basic身份验证机制)
代码很短:
import java.net.Authenticator;
import java.net.PasswordAuthentication;
class MyAuthenticator extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication ( "username ", "password ");
}
}
在程序中调用:
Authenticator.setDefault (new MyAuthenticator ());
希望对以后碰到这个问题的人有用
来源:https://www.cnblogs.com/linus-tan/p/13679130.html


猜你喜欢
- 当使用struts2的validation.xml进行验证时,需要注意如下几个方面:I.首先应该注意validation.xml的名字,一定
- 一、系统介绍本系统实现了用户登录,实现了对学生成绩的增删改查,实现了用户修改密码功能,采用MD5加密算法,数据库使用Mysql8.0.13,
- 在看了网上多篇rxjava和retrofit的文章后,大概有了一个初步的认识,刚好要做一个多图上传的功能,就拿它开刀吧。下面的内容将基于之前
- 前言一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了
- 需要读取如图所示注册表【HKEY_LOCAL_MACHINE\SOFTWARE\EasyDrv7】节点下的【DateTime】的值直接上代码
- 函数式接口1.1 函数式接口概述函数式接口:有且仅有一个抽象方法的接口Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可
- java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂)在个项目中,我只用数组保存数据,和只用for循
- 目录一、Actuator简介二、与SpringBoot2.0整合 1、核心依赖Jar包2、Yml配置文件三、监控接口详解 
- 1.SpringBoot整合JDBCTemplate1.1.导入jdbc相关依赖包主要的依赖包:<dependency> &nb
- 如下所示:# ===============================================================
- 本文实例为大家分享了Swing实现可动态刷新的验证码的具体代码,供大家参考,具体内容如下不多,code代码如下:import java.aw
- 本文实例总结了C#中WinForm程序退出方法技巧。分享给大家供大家参考。具体分析如下:在c#中退出WinForm程序包括有很多方法,如:t
- GB2312是简体中文系统的标准编码 用“区” 跟“位”的概念表示 称之为区位码 区指代大的范围 位相当于偏移量。每个汉字占两个字节高位字节
- Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中。然而 XML 配置文件需要通过 D
- 本文实例为大家分享了java使用集合实现通讯录的具体代码,供大家参考,具体内容如下代码有些繁琐,只适合初学者。项目1java通讯录方法(声明
- 之前写过一篇刷新加载《RecyclerView上拉加载和下拉刷新(基础版)》 ,这次是进行改装完善。代码中注释的很详细,所以就直接上代码了。
- (效果如上图所示)其实很简单:比方说上面的容器是一个ListView<ListView android:id="@+id/l
- springboot 参数格式校验@Validated 字面意思校验@RequestBody该注解不用多说,意思是接收为json格式的参数@
- 1、启动新Activty1.1、功能分析App功能在第一个Activity输入消息点击第一个Activity的发送按钮发送消息到第二个Act
- 本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android