idea搭建简单的webService工程服务端,以及如何使用axis作为客户端调用接口

idea搭建webService工程完全可以看这个老哥的博客,写得蛮清楚的:https://blog.csdn.net/qq_21399933/article/details/78797071

我发送的接口:

package example;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(targetNamespace = "HelloWorldWS")
public class HelloWorld {
  @WebMethod
  public String sayHelloWorldFrom(@WebParam(name="from")String from) {
    String result = "Hello, world, from " + from;
    System.out.println(result);
    return result;
  }

  public static void main(String[] argv) {
    Object implementor = new HelloWorld ();
    String address = "http://localhost:9000/HelloWorld";
    Endpoint.publish(address, implementor);
  }
}

这边主要写一下如何用axis作为客户端调用发布的接口。

我用的是maven工程,pom.xml文件里加加入:

 <!-- webService -->
    <dependency>
      <groupId>org.apache.axis</groupId>
      <artifactId>axis</artifactId>
      <version>1.4</version>
    </dependency>

    <dependency>
      <groupId>javax.xml.rpc</groupId>
      <artifactId>javax.xml.rpc-api</artifactId>
      <version>1.1.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.bundles</groupId>
      <artifactId>commons-discovery</artifactId>
      <version>0.4_1</version>
    </dependency>

    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.3</version>
    </dependency>

客户端类:

package com.test.webService;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WebServiceClient {
    public static void main(String[] args) {
        try {
            String endpoint = "http://localhost:9000/HelloWorld?wsdl";
            //直接引用远程的wsdl文件
            //以下都是套路
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setEncodingStyle("UTF-8");
            call.setTargetEndpointAddress(endpoint);
            //call.setOperationName("sayHelloWorldFrom");//WSDL里面描述的接口名称
            call.setOperationName(new javax.xml.namespace.QName("HelloWorldWS", "sayHelloWorldFrom"));
            call.addParameter("from", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//接口的参数
            //call.addParameter("from", XMLType.XSD_STRING, ParameterMode.IN);
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
            String temp = "测试人员";
            String result = (String) call.invoke(new Object[]{temp});//给方法传递参数,并且调用方法
            System.out.println("result is " + result);
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
}

注意:之前没写@WebParam(name="from")发现传参怎么都传不上,一直未null,原来参数不能写具体的参数名,要写为:arg0,arg1,arg2...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值