zoukankan      html  css  js  c++  java
  • WebService 入门知识

    之前写了一篇博客,是使用cxf搭建webservice的客户端和服务端(暂时还没写完),突然意识到如果自己上手就学框架,似乎是一个不明智地做法,于是打算从头开始,先把框架放一边,学着用一些基础地知识完成webservice的操作,因为我一开始学webservice的目的,是想通过官方给的wsdl,查到自己城市公交车的实时位置,所以本文是以如何搭建客户端为主写的,至于服务端的搭建,暂时还不是我所面临的主要矛盾,所以先搁置在一边。正文开始......

    webservice 服务端的搭建

    步骤概要

    0、 生成客户端代码wsimport
    1、 查看服务说明书wsdl
    2、 按照服务说明书进行编程,找关键节点

    关键节点

    wsdl内容 作用
    <service name="{service_name}"> 创建{service_name}对象
    <portType name="{portType_name}"> 实现类的名称
    <portType>标签下面的<operation name="{operation_name}"> 这里的operation_name就是方法

    具体步骤

    零、生成客户端程序

    生成客户端程序需要使用命令wsimport -s . {url}
    注意此命令需要在需要创建客户端的文件内打开,如在eclipse中的src目录下,进入cmd或者Powershell,才能使用该命令在正确的地方创建好客户端代码
    url中的内容为wsdl文件的绝对路径,包括来自于互联网的位置或者是本地绝对地址

    举例说明:

    0、先在eclipse中新建项目

    1、在本地打开src文件夹

    注意点击此按钮之后,需要双击src文件夹,才能进入src文件夹

    2、按住shift加鼠标右键,打开Powershell

    3、输入wsimport命令,此处采用一个网站提供的wsdl为例,此service的作用是查询手机号归属地,地址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL

    此地址来自于webxml官网,官网链接:http://www.webxml.com.cn/zh_cn/index.aspx
    解析成功

    Warning可以忽略

    4、观察src文件夹下,出现了相关目录,在eclipse中观察需要刷新

    5、新建一个package,此处采用的是在原包后加“.client”构建新的包,并新建Client.class文件,此处命名可以随意

    一、查看wsdl服务说明书

    观察wsdl文件,发现其本质上是一个xml文件,找到它们的关键标签,注意wsdl文件推荐从下往上
    1、找<service name="{service_name}">

    2、找<portType name="{portType_name}">,此处找使用soap协议的portType

    3、找<portType>标签下面的<operation name="{operation_name}">

    二、进行编程

    此处代码非常简单,一般而言有两种方式,这里仅仅记录推荐的一种方式

    package cn.com.webxml.client;
    
    import cn.com.webxml.MobileCodeWS;
    import cn.com.webxml.MobileCodeWSSoap;
    
    public class Client {
    	
    	public static void main(String[] args) {
    		// 1、创建服务视图
    		MobileCodeWS service = new MobileCodeWS();
    		
    		// 2、根据服务视图创建实现类对象
    		MobileCodeWSSoap port = service.getPort(MobileCodeWSSoap.class);
    		
    		// 3、调用方法, 这里可以传递参数
    		String mobileCodeInfo = port.getMobileCodeInfo("13333333333", null);
    		System.out.println(mobileCodeInfo);
    		
    		
    	}
    }
    

    具体传何参数,由官网的说明书给出

    地址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo

    最后测试


    说明:有时会遇到使用wsimport生成客户端出错的现象,这主要是由于wsdl中的某几行不符合自动生成的规范,需要我们将整个wsdl文件复制到本地,保存为wsdl格式文件,将其中的<s:any/> </s:sequence>改成<s:any minOccurs="2" maxOccurs="2"></s:any>如图:

    改成

    再将来自网络的url改成本地的绝对路径,就可以使用wsimport生成客户端代码了

  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/zhiless/p/13221906.html
Copyright © 2011-2022 走看看