webservice的抓包工具,根据网上资料操作,最终成功,写下此文记录过程。
我们来看一下我们上面天气程序发送的数据的格式,这需要一个工具TCP/IP Monitor ,Eclipse自带的Debug工具之一,用于捕获Http、TCP/IP协议包。原理是一个代理服务,客户端先把数据发送到代理服务,然后代理服务再把数据发送到服务器,这样就能获取请求数据和响应数据。
一、webservice
1、服务接口类
public interface WeatherInterface {
public String queryWeather(String cityName);
public String sayHello(String name);
}
2、服务接口实现类
import javax.jws.WebService;
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
public String queryWeather(String cityName) {
System.out.println("获取城市名"+cityName);
String weather = cityName + "暴雨";
return weather;
}
@Override
public String sayHello(String name) {
return "hello:" + name;
}
}
3、发布服务
import javax.xml.ws.Endpoint;
public class WeatherServer {
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
}
}
4、浏览器访问地址http://127.0.0.1:12345/weather?wsdl,返回下文表示发布服务成功
一、配置TCP/IP Monitor
window--》preferences--》TCP/IP Monitor
说明:54321是供客户端访问的新端口
2、点击start启动
3、在浏览器中访问代理端口54321亦能正确返回报文,即为配置成功
http://127.0.0.1:54321/weather?wsdl
三、客户端访问 本文使用的是生成客户端方式
生成客户端使用jdk自带工具wsimport
C:\Users\user>wsimport -keep -p com.demo.client http://127.0.0.1:54321/weather?wsdl
1、将客户端WeatherInterfaceImplService中所有的端口12345改为代理端口54321
2、访问调用webservice
import com.webservice.provider.WeatherInterfaceImpl;
import com.webservice.provider.WeatherInterfaceImplService;
/**
* 生成客户端方式
*
* @version:1.0
* @Description:
* @author:wanghr @Date:2020年9月24日
*/
public class ClientTest {
public static void main(String[] args) {
// 创建服务视图,视图是从wsdl文件的service标签的name属性获取
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
// 获取服务实现类,实现类从wsdl文件的portType的name属性获取
WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);
// 获取查询方法,从portType的operation标签获取
String weather = weatherInterfaceImpl.queryWeather("北京");
System.out.println(weather);
}
}
3、TCP/IP Monitor窗口即可获取展示请求,相应具体Http、TCP/IP协议包