网上有很多类似webservice的一些教程,但感觉都不太实用,哪怕你把helloworld写再优雅,再深奥,到了实际商业应用,还是会有各种各样的问题。这里清风讲一下webservice的客户端开发

 

工作上设计到webservice的开发,多半是调用三方的webservice服务。好了,废话不多说,进入正题

 

我们以这个查询电话归属地为例来进行讲解,如何调他的服务,来获取我们需要的信息

(PS.目前这个webservice是免费并且可用的,可能别人会收费,可能会撤服务,如果真是这样,大家可以换一个,网上这类服务也不少)

 

编码webservice代码,首先需要拿到服务端的wsdl文件,何为wsdl文件,这个大家百度吧,这里就不说了。

一般服务的wsdl文件,都是在服务链接的后面加上“?wsdl”,以我们这个demo为例,他的wsdl文件就是 http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

 

生成客户端代码,也封很多种,这里我们讲解比较主流的一种,用cxf来生成

cxf是Apache的顶级项目,下载地址如下:http://cxf.apache.org/download.html

我下的是最新版 apache-cxf-3.0.3-src.zip,大家直接下最新版的,应该也没什么问题

 

下好了之后,进入apache-cxf-3.0.3\bin目录,可以看到有一个指令是 wsdl2java

 

在这个目录下,打开命令行,输入指令

wsdl2java -p com.cug.client -encoding utf-8 http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

-p 是指定包名

-encoding 是指定编码方式(主要是针对注释,有的注释是中文,不加的话,就会显示乱码,对代码没影响)

然后接下来就是接上wsdl文件的地址。wsdl文件也可以下载到本地,一样的效果,按自己情况选择

 

执行完后,就会在当前目录下,生成客户端代码了。

这个包里面,就全是生成好的客户端代码

java实现ws客户端 java webservice客户端代码_java

 

命名比较规范的服务端,一般你生成好了,会有一个类叫XXXXSoap。这个类就是你需要使用的类,如果没有,那就要自己找找看了(后面我会附上全部代码供大家参考)

 

接下来就是我们自己的功能代码了,这里我是通过static来进行单例管理。也可以托管给spring管理,这里我不贴出来了,不然spring的配置又一大推,太繁琐了。大家自己google一下,很容易

public class SoapClient {

	private static MobileCodeWSSoap soap;
	
	static{
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setAddress("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx");
		factory.setServiceClass(MobileCodeWSSoap.class);
		soap = (MobileCodeWSSoap) factory.create();
	}
	
	public static void main(String[] args) {
		String info = soap.getMobileCodeInfo("13512757811", null);
		System.out.println(info);
	}
}

 展示结果截图

java实现ws客户端 java webservice客户端代码_java_02