JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解

概述

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 ());

希望对以后碰到这个问题的人有用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java编程中使用XFire框架调用WebService程序接口

    JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊.但就算是伤心,我们也还是要完成的.JAVA也不乏比较好的实现,如xfire,jersey,CXF. 这里我们就一起来看一下xfire的实现. 1)首先,当然是要下包啦,这个普通人都知道.http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下distr

  • 详解java开发webservice的几种方式

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟.这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便. (1)下载eclipse的Java EE版本http://www.jb51.net/softs/239903.

  • Java编程Webservice指定超时时间代码详解

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术 所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(采用交互提问的方式来加深大家对此技术的理解). 远程调用技术有什么用呢?商场的POS机转账调用的转账方法的代码是在银行服务器上,还是在商场的pos机上呢?什么情况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第

  • Java WebService 简单实例(附实例代码)

    前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作.  一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22  二.创建服务端 1.创建[Web Service Project],命名为[TheService]. 2.创建[Class]类,命名为[ServiceHello],位于[com.hyan.service]包下. 3.编写供客户端调用的方法,即编译方法代码. 4.进行编译 说明:编译失败的话,请将该项目引用的jd

  • Java调用WebService接口的方法

    本文实例讲述了Java调用WebService接口的方法.分享给大家供大家参考.具体如下: 这里讲述有参方法Add,代码如下: 复制代码 代码如下: public static void addTest() {         try ...{             Integer i = 1;             Integer j = 2;                         //WebService URL             String service_url =

  • Java调用CXF WebService接口的两种方式实例

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 1.静态调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出异常 factory.getOutInterceptors().add(new LoggingInInterceptor()); // 注册webservic

  • Java解析调用webservice服务的返回XML串详解

    本文由Markdown语法编辑器编辑完成. 1. 需求分析: 已知当在调用某一webservice的服务时,如果调用成功,会接受到该服务的返回XML串.后端在获取了该XML原始串时,需要进行解析,将其解析为JSON格式,以便于发送到前台,供前台页面显示和交互. 2. 解决方案: 该XML的原始形式为: <?xml version="1.0" encoding="UTF-8" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=

  • Java访问WebService返回XML数据的方法

    本文实例讲述了Java访问WebService返回XML数据的方法.分享给大家供大家参考.具体如下: import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.io.FileNotFoundException; import java.io

  • Java客户端调用.NET的WebService实例

    项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMethod] public string HelloWorld(string str) { return "Hello World"; } 2,新建Java的WebService客户端,lib引入以下5个jar包(我是用idea生成的WebService客户端,会下载7个包,我试着删掉了lo

  • JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解

    概述 wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦. 先看两张截图: 使用浏览器打开webservice出现的界面: 使用wsimport生成webservice客户端出现401错误: 需用到的命令参数如下: 1. -d <directory> 在指定的目录生成class文件 2. -p <pkg> 指定生成文件的包结构 3. -Xauthfile <filepath> 在格式文件进行授权信息 4.

  • JAVA递归生成树形菜单的实现过程

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级子树并接上,直至为末端节点拼接上空的“树”. 首先,编写数据模型Menu.每条菜单有自己的id.父节点parentId.菜单名称text.菜单还拥有次级菜单children. import java.util.List; public class Menu { private String id;

  • Java基于jeeplus vue实现简单工作流过程图解

    jeeplus 是一款基于代码生成器的快速开发平台. 前后端分离.maven多模块开发,方便多人协同开发 后端选型:springboot2 + mybatis + shiro + jwt token + flowable 前端选型:vue + element-ui + es6 + webpack 代码生成器支持连接不同的数据库,生成的模块可以连接指定的数据库,支持自定义模板,可以无限扩展,生成各种复杂的代码 一套代码支持mysql, oracel, postgresql,sqlserver数据库

  • Jmeter生成UUID作为唯一标识符过程图解

    在测试过程中,我们有时候需要一个唯一不重复的值(比如order_id).我之前一直用的时间戳+计数器/随机函数拼接,但是有时候效果不太好,今天知道了UUID这玩意,可以来操作下.jmeter也提供了UUID函数,这里我参考百度写法用beanshell. 1.添加一个测试计划--线程组--BeanShellSampler import java.util.UUID; UUID uuid1 = UUID.randomUUID(); //获取UID的值 //把uuid中的'-'去掉,然后传给zichu

  • java WSDL接口webService实现方式

    一.使用JDK生成WSDL的对象类 1.cmd进入JDK的bin文件中 执行命令 wsimport -keep -p com.demo.client http://localhost:8080/Demo/services/MyService?wsdl 比较常用的[options]有: 1). -d <directory> 在指定的目录生成class文件 2). -clientjar <jarfile> 在当前目录生成jar文件,结合-d <directory>可以在指定

  • 使用jaxws建立webservice客户端并实现soap消息的handler验证示例

    因项目需要,将之前使用过的webservice重新捡了起来,并且这次选择了使用不需要jar包的Java原生Jaxws.首先是wsimport的用法,先分享我的用法:cmd下先转到工程所在路径,然后运行以下命令 复制代码 代码如下: wsimport -keep -extension -s ./src -p com.jaxws.test http://192.168.1.1:8080/service?wsdl 在com.jaxws.test的包下就能找到自动生成的各种客户端相关辅助类.这些类怎么用

  • java开发分布式服务框架Dubbo调用过程

    目录 大致流程 调用请求的具体信息 协议 Dubbo协议 序列化器 调用流程图 调用流程源码分析--客户端 模板方法模式 路由和负载均衡 调用的三种方式 调用流程源码分析--服务端 总结 大致流程 客户端根据远程服务的地址,客户端发送请求至服务端,服务端解析信息并找到对应的实现类,进行方法调用,之后将调用结果原路返回,客户端解析响应之后再返回. 调用请求的具体信息 客户端发送给服务端的请求中应该包含哪些具体信息呢? 首先肯定要说明调用的是服务端的哪个接口.方法名.方法参数类型.以及版本号等,将上

  • java验证码生成具体代码

    本文实例为大家分享了java验证码生成的示例代码,供大家参考,具体内容如下 package com.gonvan.component.captcha; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Random; import javax.imag

  • 解析利用wsdl.exe生成webservice代理类的详解

    利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部分D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl在d:/Temp下就会产生一个TestServ

  • java随机生成一个名字和对应拼音的方法

    本文实例讲述了java随机生成一个名字和对应拼音的方法.分享给大家供大家参考.具体如下: package com.cn.wangk.util.name; import java.util.Random; import com.cn.wangk.util.StrTools; public class ChineseName { String[] sName = new String[95]; String[] Name = new String[79]; private String Names;

随机推荐