SpringBoot创建webService客户端并调用服务(最简单实用)

SpringBoot创建webService客户端并调用服务(最简单实用),第1张

SpringBoot创建webService客户端并调用服务(最简单实用)

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5687230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存