java调用webservice接口(.asmx)

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

    public static void main(String[] args){

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

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

            String v = (String) call.invoke(new Object[] { pageSize, pageindex });// 调用方法并传递参数-传递的参数和设置的参数要对应,顺序不能搞错了

            System.out.print(v);//打印结果(我设置的接收格式为json字符串,这边直接打印出来)
        }catch (Exception ex){
            ex.printStackTrace();
        }  
    }

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

activation.jar
axis-1.4.jar
axis-jaxrpc-1.4.jar
commons-discovery-0.5.jar
commons-httpclient.jar
mail.jar
wsdl4j-1.6.3.jar

由于方法中用的几个接口都是上面几个jar包提供的,所以缺少jar会报错。jar包可以到maven仓库下载。jar包加好以后,main方法就可以直接运行啦~~~

你可能感兴趣的:(java调用webservice接口(.asmx))