用Restful方式调用WebService接口(需认证)

这篇具有很好参考价值的文章主要介绍了用Restful方式调用WebService接口(需认证)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作

一个可以调用的WebService接口

调用WebService接口的SoapUI工具

调用Rest接口的Postman/Apipost工具

第一步:解析wsdl

首先接口在浏览器里访问是这样的,一个需要认证的接口

restful接口认证,restful,postman,后端

打开SoapUI工具,new一个Project,自定义一下名称和粘贴你的wsdl地址

restful接口认证,restful,postman,后端

 

 解析wsdl的时候弹出提示输入账号密码,跟浏览器那边一样,要先认证才能看到wsdl配置

restful接口认证,restful,postman,后端

 

解析完成后,左边的列表树会发现2个接口方法

restful接口认证,restful,postman,后端

第二步:用SoapUI调用接口

打开其中一个, 按照接口要求传值调用,我这是调用成功并获取返回值的截图

restful接口认证,restful,postman,后端

 

注:如果是需要认证的接口,要再次配置认证账号和密码,在这里配置,左下角的“Auth”

restful接口认证,restful,postman,后端

 

第三步:用Apipost调用接口

用postman也可以,只不过我们要支持国产,宣传国产。而且Apipost做得也很好,大家也可以试试。

把SoapUI解析出来的接口地址和传参格式复制出来备用

restful接口认证,restful,postman,后端

 

打开Apipost,把接口地址和传参放进去,选择POST方式,raw传参,格式是xml

restful接口认证,restful,postman,后端

注:如果是认证接口,在认证这里配置。这里的认证就是Header里的Authorization(key),value是Basic [你的账号密码Base64编码后的字符串]

restful接口认证,restful,postman,后端

 

 调用结果和SoapUI一样,说明调用成功了

restful接口认证,restful,postman,后端

 

第四步:用Java代码调用接口

最终都是合并到项目代码里来的,这里调用代码没用httpConnect和httpClient,我用的是国产jar包工具类HuTool,非常方便好用,而且有官网,有API文档,大家可以试试。

直接贴代码了,一眼会。

package 你的包名;

import cn.hutool.http.HttpRequest;

public class RestTest {

    public static void main(String args[]) {
        String url = "你要调用的WebService接口地址";
        String xml = "你要传的request请求参数";

        String data = HttpRequest.post(url)
                .header("Content-Type", "text/xml")
                .header("Authorization", "Basic {你的认证账号密码}")
                .header("time", "3600")
                .body(xml)
                .execute().body();

        System.out.println(data);
    }

}

完结,撒花!

本来不管是用Axis还是用XFire框架去整合调用都会显得很麻烦,要整合相关类库到项目中需要付出的时间成本,或者使用【generate java code from wsdl(Axis)】功能生成的大量客户端代码,会显得很臃肿,切换接口地址的时候更是头疼。而用这种“另辟蹊径”的方法,会节省很多时间和代码量,很轻松就能达成目标了。

一些未解决的问题

另外问下,用IDEA的generate java code from wsdl无法生成带认证的wsdl,会提示“wsdl url is not valid”。而在浏览器访问后再手动保存wsdl文件,再用这个功能勾选用离线文件生成,调用的时候用Bingdingstub类去调用,已经用.setUsername和.setPassword设置账号密码了,但调用还是不行,这个你们有啥解决方案不?

调用的代码文章来源地址https://www.toymoban.com/news/detail-642634.html

package 你的包名;

import java.net.URL;

public class MainTest {

    public static void main(String args[]) {
        try {
            PartnerRequest partnerRequest = new PartnerRequest();
            partnerRequest.setACCOUNT_GROUP("Z005");
            partnerRequest.setBP_CLASS("1");
            partnerRequest.setCOMPANY("2600");
            partnerRequest.setHAS_CREDIT_CODE("1");
            GetPartner getPartner = new GetPartner(partnerRequest);

            String url = "你要调用的WebService接口地址";
            SI_CUSSUPPLIER_ACCESS_RCVBindingStub stub = new SI_CUSSUPPLIER_ACCESS_RCVBindingStub(new URL(url), new SI_CUSSUPPLIER_ACCESS_RCVServiceLocator());
            stub.setUsername("认证的账号");
            stub.setPassword("认证的密码");

            // 不需要认证的话只要用service对象就可以调用了
            SI_CUSSUPPLIER_ACCESS_RCVServiceLocator locator = new SI_CUSSUPPLIER_ACCESS_RCVServiceLocator();
            SI_CUSSUPPLIER_ACCESS_RCV service = locator.getHTTPS_Port();

//            GetPartnerResponse response = service.cusSupplier_Query(getPartner);// 不需要认证的话只要用service对象就可以调用了
            GetPartnerResponse response = stub.cusSupplier_Query(getPartner);// 到这步就报错了

            MdmPARTNER mdmPARTNER = response.get_return();
            System.out.println(mdmPARTNER.getIS_EXIST());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

到了这里,关于用Restful方式调用WebService接口(需认证)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Restful风格使用postman测试接口【增删查改示例】

    Postman 最早是google的一个插件存在的,但是又google退出中国以及postman团队对工具的定位,主攻pc端app的开发及优化,现在的google插件已经很少再使用了,postman虽然是一个商用软件,但是对于我们普通用户来说,基本功能完全够用的。 Postman 从最初设计上就是为接口测试而生的

    2024年02月06日
    浏览(55)
  • 用Kettle调用Restful API 接口

    前言 作为一名架构师,在带领团队进行项目开发时,笔者认为一定要遵循一个原则:能借助第三方工具解决的开发任务,尽量用工具解决,以此来减少开发量,这样不但能够提高团队的工作效率,便于项目及时交付,也能在开发人员数量一定的条件下,更容易把余下的开发工

    2024年02月01日
    浏览(45)
  • 使用postman 调用 Webservice 接口

    使用postman 调用 Webservice 接口,postman,webService,接口,cxf

    2024年02月08日
    浏览(58)
  • 一直使用PostMan接口测试?不妨试试IDEA内置插件Restful Fast Request

    小编在看一些Idea常用开发插件的时候,发现了一个神奇的插件,百度一搜还是咱们国人开发的,支持一波。今天安装了一下,是真的香啊!完全可以代替Postman来进行测试了,它就是Idea的插件 Restful Fast Request 。今天小编就带大家一起探索一下这个插件到底好不好使用!! R

    2024年02月12日
    浏览(38)
  • C# 调用SAP WebService接口(SoapUI Postman)

    SAP wsdl地址发放在浏览器中是需要输入用户名密码进行认证的 将wsdl地址放到SoapUI进行解析 输入用户名密码 左边就是请求的XML格式,右边是接口返回内容,点击运行就可以看到结果 Request1的地址就是我们需要调用的地址(这里提供的域名和wsdl 的域名不一致,需要换成wsdl的域

    2024年02月09日
    浏览(43)
  • 学习笔记230804---restful风格的接口,delete的传参方式问题

    如果后端提供的删除接口是restful风格,那么使用地址栏拼接的方式发送请求,数据放在主体中,后端接受不到,当然也还有一种可能,后端在这个接口的接参设置上是req.query接参。 问题描述 今天遇到的问题是,delete接口,需要传id,后端需要id的数据类型是lang类型,使用数

    2024年02月12日
    浏览(40)
  • 理解WebService SOAP、Restful、HTTP(post、get)请求

    Webservice 两种实现方式(SOAP、Restful)跟HTTP(post/get) 直接请求各个优缺点,以及如何判断选择使用哪一种。 HTTP-GET和HTTP-POST是 标准协议 ,他们使用HTTP( 超文本传输协议 )谓词对参数进行编码并将参数作为名称/值对传递,还使用关联的请求语义。每个协议都包含一系列H

    2024年02月07日
    浏览(44)
  • Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层, 是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。 通过在接口上声明注解的方式配置HTTP请求接口。 官网: Forest   代码地址: forest: 声明式HTTP客户端API框架,让

    2024年02月04日
    浏览(115)
  • Java 客户端调用 WebService 接口的一种方式

      通过SoapUI创建一个SOAP Project;   项目名称自定义,WSDL地址维护WebService接口地址。点击OK即可   项目创建完成后,展开WebService项,可以看到具体的接口,打开接口下的Request,右侧面板Form标签下可以清晰的看到请求入参,点击Submit请求按钮可以看到Overview标签下的响应结

    2024年01月18日
    浏览(49)
  • SpringBoot调用第三方WebService接口的两种实现方式

    WebService接口的发布通常一般都是使用WSDL(web service descriptive language)文件的样式来发布的,该文档包含了请求的参数信息,返回的结果信息,我们需要根据WSDL文档的信息来编写相关的代码进行调用WebService接口。接下来我将采用常见的两种方式调用WebService接口。 目前我需要

    2024年02月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包