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++挺难的, ...
随机推荐
- Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介.Java REST Client.Java Client.Spri ...
- k8s环境搭建--基于minik8s方法
minik8s 安装 关闭selinux.开启ipv6 sudo bash selinux_ipv6.sh 下载kubectl和minikube 下载minikube,因为国外的源被墙了,所以只能用阿 ...
- 吴恩达(Andrew Ng)——机器学习笔记1
之前经学长推荐,开始在B站上看Andrew Ng的机器学习课程.其实已经看了1/3了吧,今天把学习笔记补上吧. 吴恩达老师的Machine learning课程共有113节(B站上的版本https:/ ...
- Python函数初识二
一.变量的作用域LEGB 1.1.变量的作用域 在Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名 ...
- Scrum立会报告+燃尽图(十月十一日总第二次):需求分析
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2191 Scrum立会master:张俊余 一.小组介绍 组长:付佳 组员 ...
- servlet基础学习总结
Servlet的任务 1. 读取客户端发送的显示的数据,包括HTML表单和一些客户端程序的表单 2. 读取客户端发送的隐式的数据,包括cookies.媒体类型等 3. 处理数据并产生结果 4. ...
- gdb调试器学习链接
首先要带 -g 选项用gcc编译 常用指令:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html#gdb 带main的命令行参 ...
- 关于mybatis的思考(3)——ResultMaps的使用
ResultMap元素在mybatis中非常重要,目的是告诉mybatis将从结果集中取出的数据转换为开发者需要的对象. UserMapping.xml <!-- selectAll操作 ...
- iOS- Exception Type: 00000020:什么是看门狗机制
1.前言 前几天我们项目闪退之后遇到的一个Crash,之后逛了许多论坛,博客都没有找到满意的回复 在自己做了深入的研究之后,对iOS的看门狗机制有了一个基本的了解 而有很多奇怪的Cras ...
- 关于css伪类
p:nth-child(2){} !选择所有p元素的第二个子元素: p:nth-of-type(2) !选择所有p元素第二个为p的子元素(是选择第二个类型为p的元素 而不是第二个子集为p的元素)