WebService学习
Posted 双子家的咸蛋蛋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebService学习相关的知识,希望对你有一定的参考价值。
一.jdk搭建WebService服务端
1.定义接口
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService//注解接口
public interface WebServiceI {
@WebMethod//注解方法
String SayHello(String name);
@WebMethod
String save(String name,String age);
}
2.实现类
package com.sinosoft.webservice.impl;
import javax.jws.WebService;
import com.sinosoft.webservice.Interface.WebServiceI;
@WebService//注解实现类
public class WebServiceImpl implements WebServiceI{
@Override
public String SayHello(String name) {
System.out.println("WebService SayHello " + name);
return "SayHello " + name;
}
@Override
public String save(String name, String age) {
System.out.println("WebService save " + name + ", " + age);
return "save Success";
}
}
3.发布方式:
1)手动发布
package com.sinosoft.webservice.test;
import javax.xml.ws.Endpoint;
import com.sinosoft.webservice.impl.WebServiceImpl;
public class WebServicePublish {
public static void main(String[] args) {
String address = "http://localhost:8081/webservice";//访问地址
Endpoint.publish(address, new WebServiceImpl());//发布
System.out.println("发布WebSerivce成功!");
}
}
2).放监听器里
package com.sinosoft.webservice.test;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.xml.ws.Endpoint;
import com.sinosoft.webservice.impl.WebServiceImpl;
@WebListener//监听器,初始化时即启动
public class WebServicePublishListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
String address = "http://10.46.104.166:8081/WS_Server/Webservice";
Endpoint.publish(address, new WebServiceImpl());
System.out.println("发布WebSerivce成功!");
}
}
3).以servlet方式发布
package com.sinosoft.webservice.test;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;
import com.sinosoft.webservice.impl.WebServiceImpl;
@WebServlet(value="",loadOnStartup=0)//loadOnStartup >= 0表示在容器加载时即启动
public class WebServicePublishServlet extends HttpServlet{
public void init(){
String address = "http://10.46.104.166:8081/webservice";
Endpoint.publish(address, new WebServiceImpl());
System.out.println("发布WebSerivce成功!");
}
}
二.搭建WebService客户端
1.访问自己的WebService服务端
新建java项目,获取到src所在路径,然后进入dos命令窗口,切换到src所在路径,然后命令行输入wsimport -keep XXX?wsdl (xxx代表服务端的地址)
成功后src下会出现一个包,里面有许多类,只需注意最后两个就行.
新建测试类,
package com.sinosoft.webservice.client;
import com.sinosoft.webservice.impl.WebServiceImpl;
import com.sinosoft.webservice.impl.WebServiceImplService;
public class WSClient {
public static void main(String[] args) {
WebServiceImplService factory = new WebServiceImplService();//客户端连接类(上图的2)
WebServiceImpl wsImpl = factory.getWebServiceImplPort();//接口(上图的1)
String sayResult = wsImpl.sayHello("王尼玛");
String saveResult = wsImpl.save("王尼玛", "18");
System.out.println("调用WebService返回结果:" + sayResult);
System.out.println("调用WebService返回结果:" + saveResult);
}
}
运行结果:
调用WebService返回结果:SayHello 王尼玛
调用WebService返回结果:save Success
2.调用他人的WebService接口(调用免费的天气预报WebService接口)
天气预报WebService服务接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
如果它的接口是java语言编写的,则依旧创建java项目,dos窗口下切换到src所在目录
输入命令:wsimport -keep http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
可本次天气预报的接口是.NET编写的所以需要有小小的调整
浏览器输入http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
另存为wsdl文件,然后用编辑器打开把其中所有的
package cn.com.test;
import java.util.List;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;
public class WSClilent {
public static void main(String[] args) {
WeatherWebService wsService = new WeatherWebService();//连接类,上图1
WeatherWebServiceSoap wsSoap = wsService.getWeatherWebServiceSoap();//接口,上图2
ArrayOfString wsArray = wsSoap.getWeatherbyCityName("北京");
List<String> wsList = wsArray.getString();
for (String string : wsList) {
System.out.println(string);
}
}
}
运行结果:
直辖市
北京
54511
54511.jpg
2018/2/7 18:21:10
-9℃/2℃
2月7日 多云转晴
北风4-5级转西南风小于3级
1.gif
0.gif
今日天气实况:气温:0℃;风向/风力:西北风 2级;湿度:18%;紫外线强度:最弱。空气质量:良。
紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
健臻·血糖指数:易波动,风力较大,血糖易波动,注意监测。
感冒指数:易发,天冷风大,易感冒,注意防护。
穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。
洗车指数:较不宜,风力较大,洗车后会蒙上灰尘。
空气污染指数:良,气象条件有利于空气污染物扩散。
-7℃/3℃
2月8日 晴转多云
南风3-4级转北风小于3级
0.gif
1.gif
-9℃/5℃
2月9日 多云
西北风4-5级转3-4级
1.gif
1.gif
北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来,北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。
以上是关于WebService学习的主要内容,如果未能解决你的问题,请参考以下文章
WebService学习总结——调用第三方提供的webService服务
WebService学习总结——调用第三方提供的webService服务,使用cxf