webservice 菜鸟探索之旅
项目背景
接到的任务是通过调用其他平台厂商提供的webservice接口来获取他们的图片数据把图片下载下来录入我司平台。之前没有接触过webservice,所以开始了这次webservice的菜鸟之旅。
一.首先去百度查了查简单搭建了一个webservice的服务端和客户端的小demo,用来了解它的工作流程
服务端搭建
1.新建一个java项目,目录如下

2.新建个类,加注解@WebService,主要内容如下
package webservice_serverDemo; import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint; @WebService
public class Test {
/** 供客户端调用方法 该方法是非静态的,会被发布
* @param name 传入参数
* @return String 返回结果
* */
public String getValue(String name){
return "欢迎你! "+name;
} /**
* 方法上加@WebMentod(exclude=true)后,此方法不被发布;
* @param name
* @return
*/
@WebMethod(exclude=true)
public String getHello(String name){
return "你好! "+name;
} /** 静态方法不会被发布
* @param name
* @return
*/
public static String getString(String name){
return "再见!"+name;
} //通过EndPoint(端点服务)发布一个WebService
public static void main(String[] args) {
/*参数:1,本地的服务地址;
2,提供服务的类;
*/
Endpoint.publish("http://127.0.0.1:8080/Test", new Test());
System.out.println("发布成功!");
//发布成功后 在浏览器输入 http://localhost:8080/Test?wsdl
} }
3.运行主方法,控制台显示发布成功

4.浏览器输入 http://localhost:8080/Test?wsdl 可以看到生成的wsdl文件,服务端搭建完毕

客户端搭建
1.新建一个java工程
2.点击工程右键>New>Other>Web service client>填写wsdl地址如下图(确保服务端不要关闭,浏览器访问地址能看到xml)也可以填写的是一个wsdl文件的路径

finish之后就会发现在src下生成了客户端的文件夹和java类,这时候就可以在客户端调用接口了

调用一下试试
package webservice_serverDemo; import java.rmi.RemoteException;
import java.util.Iterator; import javax.xml.rpc.ServiceException; public class Hello {
public static void main(String []args) throws RemoteException, ServiceException{
TestServiceLocator test = new TestServiceLocator();
Test ports = test.getTestPort();
System.out.println(ports.getValue("小娜"));
} }
控制台输出,可以看到有一个警告是因为缺少mail.jar和activation.jar,可以自己下载,不加也没有特别大的影响

回归到项目
通过上面的小demo可以看出,eclipse能根据wsdl自动生成客户端来调用,非常简单。but,通过平台厂商反馈的wsdl文件发现,由于他们系统十分老旧,生成的wsdl无法用这种方法生成客户端,于是换了一种方法,使用axis1.4生成客户端
1.下载axis-bin-1_4.zip jar包,解压
2.进入lib目录下打开cmd 运行
D:\soft\axis-1_4\lib>java -Djava.ext.dirs=D:\soft\axis-1_4\lib org.apache.axis.wsdl.WSDL2Java -o D:\zhuhai -p com.ws D:\soft\axis-1_4\RequestService.wsdl
//java -Djava.ext.dirs=${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径} -p${package名} ${wsdl的路径(可以是绝对路径或者url)}
会报一个这个警告,没有关系,上面提过
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
3.去${代码输出路径}里可以找到生成的客户端
webservice 菜鸟探索之旅的更多相关文章
- 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...
- 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见
内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...
- 【Web探索之旅】第四部分:Web程序员
内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...
- 【Web探索之旅】第三部分第一课:服务器
内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...
- 【Web探索之旅】第三部分第二课:IP地址和域名
内容简介 1.第三部分第二课:IP地址和域名 2.第三部分第三课预告:协议 第三部分第二课:IP地址和域名 上一课我们说了在Web之中,全球各地有无数台机器,有些充当客户机,有些作为服务器. 那么这些 ...
- 【Web探索之旅】第一部分:什么是Web?
内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课 ...
- 【C++探索之旅】第一部分第三课:第一个C++程序
内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适 ...
- 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布
内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...
- 【C++探索之旅】开宗明义+第一部分第一课:什么是C++?
内容简介 1.课程大纲 2.第一部分第一课:什么是C++? 3.第一部分第二课预告:C++编程的必要软件 开宗明义 亲爱的读者,您是否对C++感兴趣,但是C++看起来很难,或者别人对你说C++挺难的, ...
随机推荐
- Java字符串与日期互转
Java字符串与日期的相互转换 1.字符串转日期 字符串的格式与日期的格式一定要对应,并且字符串格式可以比日期格式多,但不能少,数字大小不自动计算日期.其中需要主要大小写 年yyyy 月MM 日dd ...
- 浏览器初始页面设置及被hao123劫持解决办法
最近在用浏览器时打开初始页面都是hao123,喵喵喜欢简单干净的页面,就去设置初始页面. 此处放置初始页面参考(并不太难): https://jingyan.baidu.com/article/11c ...
- Python科学测量与计算库Pymeasure: 控制你的仪器进行自动测试和科学计算
Python这种脚本语言因其语法简单,工具包丰富成熟,使用起来非常方便.在很多领域被广泛使用,今天介绍的是python在仪器控制应用领域,python在仪器控制领域相关的书籍可以参考<真实世界的 ...
- 从零系列--开发npm包(二)
一.利用shell简化组合命令 set -e CVERSION=$(git tag | ) echo "current version:$CVERSION" echo " ...
- 笔试题——C++开发简单记录错误模块
题目:链接:https://www.nowcoder.com/questionTerminal/67df1d7889cf4c529576383c2e647c48 来源:牛客网 解析及代码来源:http ...
- console.log() 替代函数
var log = console.log.bind(console); log('d')
- (第六周)课上Scrum站立会议演示
组名:连连看 组长:张政 组员:张金生.李权.武志远 时间:2016.10.13 20:20——20:40 会议内容: 已完成的内容: 1.选定编译语言,安装软件并配置环境,完成了游戏的基本模型. ...
- 第一节 Linux系统简介
一.Linux定义 Linux 是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS. 操作系统在整个计算机系统中的角色: Linux 是系统调用和内核那两层,直观的来 ...
- 软工1816 · Beta冲刺(6/7)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 推进Web端完成开发 推进修改一些后端接口的逻辑 着手制作视频 接下来的计划 ...
- java拓荒者
因为是初学者 最近在看那个<java从入门到精通 韩顺平>的视频 觉得好不错 虽然视频的分辨率强差人意 但仍可接受 学知识嘛 用我们广东话说 :“鬼叫你穷,顶硬上” 韩老师的声音较好 课堂 ...