WebService的四种客户端调用方式基本

一、生成客户端调用方式

1、Wsimport命令介绍

l  Wsimport就是jdk提供的的一个工具,他的作用就是根据WSDL地址生成客户端代码

l  Wsimport位置JAVA_HOME/bin

l  Wsimport常用的参数:

Ø  -s,生成java文件的

Ø  -d,生成class文件的,默认的参数

Ø  -p,指定包名的,如果不加该参数,默认包名就是wsdl文档中的命名空间的倒序

l  Wsimport仅支持SOAP1.1客户端的生成


2、 调用公网手机号归属地查询服务

l  第一步:wsimport生成客户端代码

wsimport -p cn.itcast.mobile -s .http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

l  第二步:阅读使用说明书,使用生成客户端代码调用服务端

[java]  view plain  copy
  1. package cn.itcast.mobile.client;  
  2.   
  3. import cn.itcast.mobile.MobileCodeWS;  
  4. import cn.itcast.mobile.MobileCodeWSSoap;  
  5.   
  6. /** 
  7.  *  
  8.  * <p>Title: MobileClient.java</p> 
  9.  * <p>Description:公网手机号查询客户端</p>* 
  10.  */  
  11. public class MobileClient {  
  12.     static void main(String[] args) {  
  13.         //创建服务视图  
  14.         MobileCodeWS mobileCodeWS = new MobileCodeWS();  
  15. //获取服务实现类  
  16.         MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getPort(MobileCodeWSSoap.class);  
  17. //调用查询方法  
  18.         String reuslt = mobileCodeWSSoap.getMobileCodeInfo("13888888"null);  
  19.         System.out.println(reuslt);  
  20.     }  
  21. }  


3、公网天气服务端查询

import java.util.List;  
  • import cn.itcast.weather.ArrayOfString;  
  • import cn.itcast.weather.WeatherWS;  
  • import cn.itcast.weather.WeatherWSSoap;  
  • /** 
  •  *  
  •  * <p>Title: WeatherClient.java</p> 
  •  * <p>Description:公网天气查询客户端</p> 
  • class WeatherClient {  
  •         WeatherWS weatherWS = new WeatherWS();  
  •         WeatherWSSoap weatherWSSoap = weatherWS.getPort(WeatherWSSoap.        ArrayOfString  arrayOfString = weatherWSSoap.getWeather("北京""");  
  •         List<String> list = arrayOfString.getString();  
  •           
  •         for(String str : list){  
  •             System.out.println(str);  
  •         }  
  •     }  
  • }  

  • 4、特点

    该种方式使用简单,但一些关键的元素在代码生成时写死到生成代码中,不方便维护,所以仅用于测试。


    二、service编程调用方式

    import java.io.IOException;  
  • import java.net.MalformedURLException;  
  • import java.net.URL;  
  • import javax.xml.namespace.QName;  
  • import javax.xml.ws.Service;  
  •  * <p>Title: ServiceClient.java</p> 
  •  * <p>Description:Service编程实现服务端调用</p> 
  •  */  
  • class ServiceClient {  
  • void main(String[] args) throws IOException {  
  • //创建WSDL的URL,注意不是服务地址  
  •         URL url = new URL("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");  
  •           
  • //创建服务名称  
  • //1.namespaceURI - 命名空间地址  
  • //2.localPart - 服务视图名  
  •         QName qname = new QName("http://WebXml.com.cn/",255);background-color:inherit;">"MobileCodeWS");  
  • //创建服务视图  
  • //参数解释:  
  • //1.wsdlDocumentLocation - wsdl地址  
  • //2.serviceName - 服务名称  
  •         Service service = Service.create(url, qname);  
  •         MobileCodeWSSoap mobileCodeWSSoap = service.getPort(MobileCodeWSSoap.        String result = mobileCodeWSSoap.getMobileCodeInfo("1866666666",255);background-color:inherit;">"");  
  •         System.out.println(result);  
  • }  

  • 特点

    该种方式可以自定义关键元素,方便以后维护,是一种标准的开发方式


    三、HttpURLConnection调用方式

    开发步骤:

    第一步:创建服务地址

    第二步:打开一个通向服务地址的连接

    第三步:设置参数

    设置POST,POST必须大写,如果不大写,报如下异常


    如果不设置输入输出,会报如下异常


    第四步:组织SOAP数据,发送请求

    第五步:接收服务端响应,打印


    import java.io.BufferedReader;  
  • import java.io.IOException;  
  • import java.io.InputStream;  
  • import java.io.InputStreamReader;  
  • import java.io.OutputStream;  
  • import java.net.HttpURLConnection;  
  • import java.net.MalformedURLException;  
  • import java.net.URL;  
  •  * <p>Title: HttpClient.java</p> 
  •  * <p>Description:HttpURLConnection调用方式</p> 
  • class HttpClient {  
  • throws IOException {  
  • //第一步:创建服务地址,不是WSDL地址  
  • "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx");  
  • //第二步:打开一个通向服务地址的连接  
  •         HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  • //第三步:设置参数  
  • //3.1发送方式设置:POST必须大写  
  •         connection.setRequestMethod("POST");  
  • //3.2设置数据格式:content-type  
  •         connection.setRequestProperty("content-type",255);background-color:inherit;">"text/xml;charset=utf-8");  
  • //3.3设置输入输出,因为默认新创建的connection没有读写权限,  
  •         connection.setDoInput(true);  
  •         connection.setDoOutput(true);  
  • //第四步:组织SOAP数据,发送请求  
  •         String soapXML = getXML("15226466316");  
  •         OutputStream os = connection.getOutputStream();  
  •         os.write(soapXML.getBytes());  
  • //第五步:接收服务端响应,打印  
  • int responseCode = connection.getResponseCode();  
  • if(200 == responseCode){//表示服务端响应成功  
  •             InputStream is = connection.getInputStream();  
  •             InputStreamReader isr = new InputStreamReader(is);  
  •             BufferedReader br = new BufferedReader(isr);  
  •               
  •             StringBuilder sb = new StringBuilder();  
  •             String temp = null;  
  •             while(null != (temp = br.readLine())){  
  •                 sb.append(temp);  
  •             }  
  •             System.out.println(sb.toString());  
  •               
  •             is.close();  
  •             isr.close();  
  •             br.close();  
  •         }  
  •         os.close();  
  •       
  •          * <?xml version="1.0" encoding="utf-8"?> 
  • <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
  •   <soap:Body> 
  •     <getMobileCodeInfo xmlns="http://WebXml.com.cn/"> 
  •       <mobileCode>string</mobileCode> 
  •       <userID>string</userID> 
  •     </getMobileCodeInfo> 
  •   </soap:Body> 
  • </soap:Envelope> 
  •      * @param phoneNum 
  •      * @return 
  •      */  
  • static String getXML(String phoneNum){  
  •         String soapXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"  
  •         +"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"  
  •             +"<soap:Body>"  
  • "<getMobileCodeInfo xmlns=\"http://WebXml.com.cn/\">"  
  •                 +"<mobileCode>"+phoneNum+"</mobileCode>"  
  •               +"<userID></userID>"  
  • "</getMobileCodeInfo>"  
  •           +"</soap:Body>"  
  • "</soap:Envelope>";  
  • return soapXML;  
  • }  

  • 四、Ajax调用方式

    [html]  copy
      <!doctype html>  
    1. <html lang="en">  
    2.  head  meta charset="UTF-8"title>Document</script type="text/javascript"    function queryMobile(){  
    3.         //创建XMLHttpRequest对象  
    4.         var xhr = new XMLHttpRequest();  
    5.         //打开连接  
    6.         xhr.open("post","http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx",true);  
    7.         //设置数据类型  
    8.         xhr.setRequestHeader("content-type","text/xml;charset=utf-8");  
    9.         //设置回调函数  
    10.         xhr.onreadystatechange=function(){  
    11.             //判断是否发送成功和判断服务端是否响应成功  
    12.             if(4 == xhr.readyState && 200 == xhr.status){  
    13.                 alert(xhr.responseText);  
    14.             }  
    15.         //组织SOAP协议数据  
    16.         var soapXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"  
    17.         +"soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"  
    18.             +"soap:Body>"  
    19. getMobileCodeInfo xmlns=\"http://WebXml.com.cn/\"                +"mobileCode>"+document.getElementById("phoneNum").value+"              +"userID>getMobileCodeInfo          +"soap:Envelope>";  
    20.         alert(soapXML);  
    21.         //发送数据  
    22.         xhr.send(soapXML);  
    23. scriptbody  手机号查询:input type="text" id="phoneNum"/> "button" value="查询" onclick="javascript:queryMobile();"/>  
    24. html>

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXObject){xhr=newActiveXObject("Microsoft.XMLHTTP");}else{xhr=newXMLHttpRequest();}//指定请求地址varurl="http://127.0.0.1:7777/hello?wsdl";//
                   好不容易把WebService服务器端搭建起来,我们还需要客户端程序也同样跑起来才能够进行和服务器端程序的通信: 在这篇文章里面,我会先自己写代码去实现调用WebService服务器端程序,接下来,通过IDEA配置的方式来调用WebService服务端: 首先,我写了一个W
    1新建一个工程项目用来做服务端增加一个MyService1类文件packagecom.zns.ws;importjavax.jws.WebMethod;importjavax.jws.WebService;importjavax.xml.ws.Endpoint;@WebServicepublicclassMyService1{publicstaticvoidmain(String[]args){
    packagecom.transsion.util;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.URL;importjava.net.URLConnection;importcom.alibaba.druid.util.Base64;importcom.tra
    再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Web;5usingSystem.Web.Services.Description;67namespaceStrongSoftManage.Web.App8{9publicclassSoapExtens:SoapExtensi
    一般情况下,使用eclipse自带的jax-ws生成webservice会自动生成2个类:ContractConnector.java packagecom.wonders.webservice.contract;importjava.text.DecimalFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;i
    一、WebService概述1.1什么是WebService 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 一个跨语言、跨平台的规范(抽象)所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务
    一、什么是CXF?    ApacheCXF=Celtix+Xfire,开始叫ApacheCeltiXfire,后来更名为ApacheCXF了,以下简称为CXF。ApacheCXF是一个开源的webServices框架,CXF帮助您构建和开发webServices,它支持多种协议,比如:SOAP1.1,1,2 XML/HTTP、RESTful或者CORBA。  
    工具IDEA一、构建项目1、选择SpringInitializr2、填写项目信息3、勾选webService4、勾选Thymeleaf5、项目建立完成,启动类自动生成二、写个Controller启动服务。浏览器访问/hello接口。 
    1.环境win764位,vs20102.新建一个asp.netweb应用程序(同上一篇)3.添加一个web引用,引用上一篇创建的服务。注意不是服务引用。如下图 
    WebService之WSDL文件讲解   恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯:一、WSDL概述  
    在websrvice发布文件的webconfig中加入<httpRuntimemaxRequestLength="102400"/> <webServices>     <protocols>       <addname="HttpPost"/>       <addname="HttpGet"/>     </protocols>   
     代码比较简单,按照如下来操作即可,只是jar包有很多问题,比如找不到classnotFondspring、以及找不到xfile.xml、以及xfile.xml中的一个参数问题,以及2.0 spring。jar和spring1.6.2冲突问题,总之这个小demo报了一堆错误,其实都是jar的问题,为了让大家减少这方面的错误,所以我提供
     一、soapUI简介SOAP:   WebService通过Http协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息头的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用WebService。 
    参考,感谢https://blog.csdn.net/hj7jay/article/details/727224381.环境:win764位,jdk1.8.0_201 EclipseJavaEEIDEforWebDevelopers.Version:Mars.1Release(4.5.1)2.创建一个普通的java项目,名字是TheService在src目录下创建一个com.hyan.service包,在此包下创建
    CXF实现RestfulWebService基础示例一、写在前面IDE:IDEA14JDK:1.7CXF:2.6.2示例来源:%CXF_HOME%\samples\jax_rs\basic发布方式:JAXRSServerFactoryBean的create()方法调用方式:URL的openStream()方法、HttpClient的executeMethod()方法二、服务端(Java项目)1.准备Jar包
    封装helper类:classWebServiceHelper{///<summary>///1.get请求http方法///</summary>///<paramname="url">基础url</param>///<paramname="method">请求方法</param>///<paramnam
    .net客户端调用java或.netwebservice进行soapheader验证最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservice的安全验证基于soapheader。借此机会,顺便整理一下调用.netwebservice和javawebservice的验证方式,记录下来。
    Node.jshttps://www.cnblogs.com/goldlong/p/8027997.htmlQQ音乐apihttps://juejin.im/post/5a35228e51882506a463b172#heading-11?tdsourcetag=s_pcqq_aiomsgGit把本地仓库上传到GitHbubhttps://blog.csdn.net/zamamiro/article/details/70172900git删除本地仓库https://blog.cs
    转载自:孤傲苍狼 WebService学习总结(三)——使用JDK开发WebService一、WebService的开发手段使用Java开发WebService时可以使用以下两种开发手段1、 使用JDK开发(1.6及以上版本)-->详见:本文2、使用CXF框架开发-->详见:其他文章二、使用JDK开发WebServi