java调用webservice接口(.asmx)

本文介绍了如何在Java后台通过webservice(asmx)接口调用外部系统数据,包括创建Call对象、设置URL、SOAPAction、参数传递和数据类型设置,适合初次接触webservice的开发者参考。
摘要由CSDN通过智能技术生成

前几天对接阿里云短信接口时,需要调用其他系统的数据,该系统开发人员给我提供了webservice接口。对于从来没见过webservice接口的我,真的是一脸懵。现在把记录一下,方便自己以后用,说不定也能帮到正在看这篇文档的你。
首先需要确认,我这边写的是java后台直接调用webservice接口,并且接口后缀为asmx。
下面直接上代码:

    public static void main(String[] args){

        String url = "http://xxx.xxx.xxx/Webservice.asmx";// 提供接口的地址
        String soapaction = "http://tempuri.org/"; // 域名,这是在server定义的--不知道的可以问接口提供方,他们一并提供这个
        
        Service service = new Service();
        try{
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(url);
            call.setOperationName(new QName(soapaction, "SendSms")); // 设置要调用哪个方法
           // 设置要传递的参数-要和接口方提供的参数名一致
            call.addParameter(
                    new QName(soapaction,"un"),
                    org.apache.axis.encoding.XMLType.XSD_STRING,
                    javax.xml.rpc.ParameterMode.IN);
            call.addParameter(
                    new QName(soapaction, "pwd"), 
                    org.apache.axis.encoding.XMLType.XSD_STRING,
                    javax.xml.rpc.ParameterMode.IN);
             call.addParameter(
                    new QName(soapaction, "PhoneNumbers"),
                    org.apache.axis.encoding.XMLType.XSD_STRING,
                    javax.xml.rpc.ParameterMode.IN);
            call.setReturnType(new QName(soapaction, "SendSms"), String.class); // 要返回的数据类型(自定义类型,我这边接口提供方给我返回的是json字符串,所以我用string类型接收。这个地方一定要设置好,不然各种报错很崩溃)

            call.setUseSOAPAction(true);
            call.setSOAPActionURI(soapaction + "SendSms");

            String v = (String) call.invoke(new Object[] { un, pwd, PhoneNumbers });// 调用方法并传递参数-传递的参数和设置的参数要对应,顺序不能搞错了
            
            System.out.print(v);//打印结果
        }catch (Exception ex){
            ex.printStackTrace();
        }  
    }

嗯,上面这段代码要想成功运行还需要加载几个jar包:

  <dependency>
   <groupId>javax.activation</groupId>
   <artifactId>activation</artifactId>
   <version>1.1.1</version>
  </dependency>
  <dependency>
   <groupId>org.apache.axis</groupId>
   <artifactId>axis</artifactId>
   <version>1.4</version>
  </dependency>
  <dependency>
   <groupId>axis</groupId>
   <artifactId>axis-jaxrpc</artifactId>
   <version>1.4</version>
  </dependency>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值