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生成客户端代码了

  • 相关阅读:
    迟到感悟
    让自己记住吧。
    hadoop 数据抽取
    指标导入常用函数
    linux shell中单引号、双引号、反引号、反斜杠的区别
    简单解说Linux命令输出与命令替换
    生成表结构
    ASP.NET MVC3在Visual Studio 2010中的变化
    主键自增归0
    解决包含已存在的php文件,但提示就是找不到的问题
  • 原文地址:https://www.cnblogs.com/zhiless/p/13221906.html
Copyright © 2011-2022 走看看