webService服务的调用

webService 实际是通过网络根据soap的协议传输数据,我们不可能去自己组装消息体。

1.wsImport:

参数:-s 生成源代码

           -p 生成代码之后的包名

2.步骤:

(1)找一个空文件

       通过cmd命令行,切换到空文件夹的目录

       执行命令

wsimport -s . -p 包名   服务端的地址?wsdl

(2)把代码拷贝到客服端的工程中

webService服务的调用_第1张图片

(3)调用

package example;

import zhou.stub.PersonService;
import zhou.stub.PersonServiceService;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

public class HelloWorld {
 
    public static void main(String[] argv) {
        PersonServiceService service = new PersonServiceService();
//    获得服务点绑定的类,使用get加上port的名字(PersonServicePort),getPersonServicePort
        PersonService ps = service.getPersonServicePort();
//    调用服务端的方法
        String result = ps.sayHello("张三");
        System.out.println(result + "===========");
    }
}

webService服务的调用_第2张图片

案例:调用查询某城市天气预报服务

步骤:

1.http://www.webxml.com.cn/zh_cn/index.aspx

2.webService服务的调用_第3张图片

3.http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL根据服务地址执行上面的命令生成代码

webService服务的调用_第4张图片

webService服务的调用_第5张图片

报错的情况下,将当前的wsdl另存为到本地目录,删掉报错信息中的15,61,101行的代码,重新执行如下命令

wsimport -s . -p zhou.weather d:/Project/WeatherWS.wsdl(这个地址是本地修改后的地址)

4.拷贝java代码到客户端进行调用

webService服务的调用_第6张图片

5.查看service和port标签中要调用的方法 (翻到最后该文件从前面说过要先从底下往上看)

webService服务的调用_第7张图片

6.运行

package example;

import weather.ArrayOfString;
import weather.WeatherWS;
import weather.WeatherWSSoap;

import java.util.List;

public class HelloWorld2 {
    public static void main(String[] argv) {
        // 创建服务访问点集合对象
        WeatherWS ws = new WeatherWS();
        // 获得服务点绑定的类,使用get加上port的名字(WeatherWSSoap),getMobileCodeWSSoap
        WeatherWSSoap soap1 = ws.getWeatherWSSoap();
        // 调用服务端的方法
        ArrayOfString array = soap1.getWeather("116", null);
        List list = array.getString();
        for (String s : list
        ) {
            System.out.println(s + "==========");
        }
    }
}

webService服务的调用_第8张图片

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(webService,java)