当前位置:主页 > java教程 > JAVA WEBSERVICE客户端

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

发布:2023-01-11 17:05:22 59


给大家整理一篇JAVA相关的编程文章,网友万德水根据主题投稿了本篇教程内容,涉及到JAVA、WSIMPORT、WEBSERVICE客户端、401认证、JAVA WEBSERVICE客户端相关内容,已被394网友关注,内容中涉及的知识点可以在下方直接下载获取。

JAVA WEBSERVICE客户端

概述

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

操作成功

 

终于搞定了

直接用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 ());

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

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


参考资料

相关文章

  • Java在不存在文件夹的目录下创建文件实例代码

    发布:2019-11-12

    这篇文章主要介绍了Java如何在不存在文件夹的目录下创建文件,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下


  • eclipse创建java项目的方法详解

    发布:2019-08-09

    这篇文章主要为大家详细介绍了使用eclipse创建java项目的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Java中的接口回调实例

    发布:2022-10-21

    给大家整理一篇关于Java的教程,今天小编就为大家分享一篇关于Java中的接口回调实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


  • JavaScript的6种继承方式总结

    发布:2019-12-17

    继承是面向对象编程中又一非常重要的概念,JavaScript支持实现继承,不支持接口继承,实现继承主要依靠原型链来实现的


  • 浅谈Java内存区域与对象创建过程

    发布:2022-04-06

    下面小编就为大家带来一篇浅谈Java内存区域与对象创建过程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • Java程序使用MySQL时返回参数为乱码的解决方案大全

    发布:2020-01-07

    这篇文章主要介绍了解决Java程序使用MySQL返回参数为乱码的问题的教程,通过示例来讲解utf-8编码在MySQL中的相关配置,示例需要的朋友可以参考下


  • jQuery中read和JavaScript中的onload函数的区别总结

    发布:2019-11-12

    这篇文章主要介绍了jQuery中的read和JavaScript中的onload函数的区别,这两个函数在web编程中是最常用的,一定要搞清楚它们的区别,需要的朋友可以参考下


  • 伸入分析Java集合之LinkedList源码分析

    发布:2020-02-02

    这篇文章主要为大家详细介绍了Java集合系列之LinkedList源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • 如何理解Java 8 新增函数式接口

    发布:2020-01-19

    这篇文章主要介绍了浅谈Java 8 新增函数式接口到底是什么,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


网友讨论