java调用webservice接口(.asmx)

时间: 2023-08-15 admin 互联网

java调用webservice接口(.asmx)

java调用webservice接口(.asmx)

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

    public static void main(String[] args){

        String url = "/Webservice.asmx";// 提供接口的地址
        String soapaction = "/"; // 域名,这是在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>