调用三方webservice


模拟三方webservice地址

第一步:定义接口

@javax.jws.WebService(name = "webService",// 定义Port名称
        targetNamespace = "http://v/webs"// 定义命名空间,默认为倒置的包名
        ,serviceName ="myWebService"//修改WebService服务名称 
)
public interface WebServiceInter { // 提供一个对外公开的服务
    @WebMethod(operationName ="getNameById")
        // 修改方法名
    String getName(@WebParam(name="userId")String userId);

    @WebMethod(operationName ="getUserInfo")
        // 修改方法名
    String userInfo(@WebParam(name = "userInfo") String userInfo);
}

第二步:定义实现类

@javax.jws.WebService(endpointInterface = "com.speed.test.WebServiceInter"
        ,name = "webServiceV"// 定义Port名称
        ,targetNamespace = "http://v/webs" // 定义命名空间,默认为倒置的包名
        ,serviceName ="myWebServiceV"// 修改WebService服务名称
//服务实现类和接口的注解要一样全
)
public class WebServiceInterimpl implements WebServiceInter {

    @WebMethod(operationName = "getNameById")// 修改方法名
    @Override
    public String getName(String userId) {
        if ("admin".equals(userId)) {
            return "success";
        }
        return "error";

    }

    @WebMethod(operationName = "getUserInfo")// 修改方法名
    @Override
    public String userInfo( @WebParam(name = "userInfo")
                                        String userInfo) {
        if ("www".equals(userInfo)) {
            return "my name is "+userInfo;
        }
        return "not this name";
    }
}

1.serviceName是调用的工厂

2.targetNamespace 是cmd创建的包的名字

3.name 是这个webservice的名字

第三步:启动类:(每次更改需要重新启动)

   public static void main(String[] args) {
        //指定服务url
        String url = "http://localhost:8889/web?wsdl";
        //指定服务实现类
        WebServiceInter server = new WebServiceInterimpl();
        //采用命令行发布者Endpoint发布服务
        Endpoint.publish(url, server);


    }

第四步:找到所需要放代码文件的目录

执行:打开命令行窗口,切换到项目的src目录,执行"wsimport -keep  http://localhost:8889/web?wsdl"生成客户端代码,如下图所示

调用三方webservice

所指定的目录下自动生成代码

调用三方webservice​ 

调用webservice

第五步:调用webservice方法

 public static void main(String[] args) {
        //调用serviceName生成的属性名称方法
        MyWebServiceV factory1 = new MyWebServiceV();
  
        WebService webServicePort = factory1.getWebServiceVPort();
      
        String userInfo = webServicePort.getUserInfo("www");
        System.out.println(userInfo);
}

1.需先调用之前定义的serviceNama里面的属性名称方法获取工厂
2.根据工厂获取方法Port方法
3.调用自己定义的方法

参考:java调用第三方的webservice应用实例 - Mr_伍先生 - 博客园

上一篇:MyBatis之(五)Mybatis中的关联关系映射


下一篇:store状态管理