webService是一种出现时间很长的技术了,在这个restful方式流行的情况下,webservice已经变得不怎么常用了,但仍有不少项目依旧在使用,如比较老的项目,SAP等等。
话不多说,直接上代码
1 选中客户端代码要生成的文件夹
2 点击tools
3 选择webservice->Generate Java Code From WSDL
4.输入webService服务端url,下面这个可以用作测试
http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl
5.选择Service Platform
6 选择JAX-WS这个
6.1 第二种生成的方法
需用到的命令参数如下:
1. -d
在指定的目录生成class文件
2. -p指定生成文件的包结构
3. -Xauthfile在格式文件进行授权信息
4. -keep在生成class文件,或者jar包时,同时保留java源文件
idea 打开terminal 执行以下语句
wsimport -d D:XXXsrcmainjavacomtestcloudwebservice -p service -keep -verbose http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl
同样的可以生成代码,如果需要验证用户名密码,可以配置鉴权文件,并执行以下语句
wsimport -d D:JAVAwrokspace您的项目src -p com.xx.web -Xauthfile D:JAVAwrokspace您的项目authfile.txt -keep http://xxxx:9000/Service.asmx?wsdl
1、通过-d命令指定您的java项目src路径
2、通过-p命令指定需生成包结构(指定之后会自动生成)
3、通过-Xauthfile命令指定访问带有401认证的webservice授权文件(文件路径或文件名可以随意更改 特别简单,请放心)。
4、通过-keep命令指定webservice路径
wsimport -d D:XXXsrcmainjavacomtestcloudwebservice -p service -Xauthfile D:XXXsrcmainjavacommescloudwebserviceauthfile.txt -keep -verbose http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl
authfile.txt
http://username:password@www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl
7 ok 生成代码
这样就在你选择的文件夹下生成了客户端代码,注意会有.class文件同时生成,将其删除即可。
测试代码:
@RestController @RequestMapping("/web") public class webServiceTestController { @GetMapping("test") public Object test() { TranslatorWebService request = new TranslatorWebService(); TranslatorWebServiceSoap soap = request.getTranslatorWebServiceSoap(); ArrayOfString arrayOfString = soap.getEnCnTwoWayTranslator("word"); return arrayOfString.getString(); } }
调用:
至此就全部ok。
新加:如果需要在代码里实现basic鉴权,可以尝试添加以下代码,原理还没搞明白,不过有效倒是真的。
@RestController @RequestMapping("/web") public class webServiceTestController { @GetMapping("test") public Object test() { Bus bus = BusFactory.getThreadDefaultBus(); bus.setExtension((name, address, httpConduit) -> { final AuthorizationPolicy authorization = new AuthorizationPolicy(); authorization.setUserName("username"); authorization.setPassword("password"); httpConduit.setAuthorization(authorization); final HttpAuthSupplier supplier = new DefaultBasicAuthSupplier(); httpConduit.setAuthSupplier(supplier); }, HTTPConduitConfigurer.class); TranslatorWebService request = new TranslatorWebService(); TranslatorWebServiceSoap soap = request.getTranslatorWebServiceSoap(); ArrayOfString arrayOfString = soap.getEnCnTwoWayTranslator("word"); return arrayOfString.getString(); } }
参考链接:https://blog.csdn.net/u012228009/article/details/55000190
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)