`
wangliju0811
  • 浏览: 1514 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

webservice

阅读更多
先前没有搞过webservice技术,偶然间接触了,没想到还是不难的。这个只是我本人的工作空间,对于码农们可能只可以作为参考,下面我们看一下代码:


首先我要请求一个网址:http://localhost:8080/hbyx/services/HBZY_ESB_YX_BusinessOrder?wsdl,调用已经封装好的接口。接口里已很多方法,调用接口里面某一个方法(方法名师随便定义的,要有意义)。
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class webservice {

public static void main(String[] args) throws Exception{

    String xml = "<?xml version='1.0' encoding='GB2312'?>"+
    "<Msg>"+
    "<Head>"+
    "<Id/>" +
    "<Name>ZHYX_YHGC卷烟销售订单查询服务 </Name>"+
    "<Source>ZHYX</Source>"+
    "<Target>YHGC</Target>"+
    "<SerName>YHGC_JYXSDD</SerName>"+
    "<MsgType>0</MsgType>"+
    "<RtCode/>"+
        "<RtDesc/>"+
    "Backup1/>"+
    "<Backup2/>"+
    "<Backup3/>"+
    "<Backup4/>"+
    "<Backup5/>"+
    "<Date>2016-06-07 10:30:00</Date>"+
    "<Attrs>"+
      "<Attr>106882670,106882918,106882870</Attr>"+
      "<Attr></Attr>"+
    "</Attrs>"+
    "</Head>"+
    "<DATA>"+
    "<TABLE TABLENAME='' ACTION='INSERT'>"+
    "<ROW ACTION='INSERT'/>"+
    "</TABLE>"+
    "</DATA>"+
    "</Msg>" ;
Service sv = new Service();  //new 一个服务 
Call call = (Call) sv.createCall();
call.setTargetEndpointAddress(new URL("http://localhost:8080/hbyx/services/HBZY_ESB_YX_BusinessOrder?wsdl"));
call.setOperationName(new QName("getSaleOrderBill"));  //设置要调用的接口方法 
call.addParameter("id", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN

);//设置参数名 id  第二个参数表示String类型,第三个参数表示入参 
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//返回参数类型 
//开始调用方法,假设我传入的参数id的内容是1001   调用之后会根据id返回users信息,以xml格式的字符串返回,也可以json格式主要看对方用什么方式返回 
String result = (String) call.invoke(new Object[]{xml});
System.out.println(result);//打印字符串 
}
}












main方法运行此代码:被调用的网址会收到请求,然后会返回给我们一个xml格式的文件代码。
我们在项目里面src目录下创建一个NewXML.xml文件,把返回的xml格式的代码全部复制到新建的文件里面:
<?xml version="1.0" encoding="GB2312"?>
<Msg>
  <Head>
    <Id>YHGC_ZHYX1504773882755</Id>
    <Name>YHGC_ZHYX卷烟销售订单</Name>
    <Source>YHGC</Source>
    <Target>ZHYX</Target>
    <SerName>getSaleOrderBill</SerName>
    <MsgType>0</MsgType>
    <RtCode/>
    <RtDesc/>
    <Backup1/>
    <Backup2/>
    <Backup3/>
    <Backup4/>
    <Backup5/>
    <Date>2017-09-07 16:44:42</Date>
    <Attrs>
      <Attr/>
      <Attr/>
      <Attr/>
    </Attrs>
  </Head>
  <DATA>
    <TABLE TABLENAME="SRV_SCSS_SALEORDER" ID="销售订单编号" PLANTAX_DATE="指令开票日期" SELF_ID="销售订单编号" CONTRACTCODE="合同号" GJ_CODE="商业公司编码" CONTRACT_TYPE="收发类别" WHOUSE_CODE="合同仓库内码" MEMO="合同备注" SHIPPING_DATE="合同日期" PLANTAX_PERSONCODE="指令人员内码">
      <ROW ACTION="INSERT" ID="43499_1003" PLANTAX_DATE="2017-07-07" SELF_ID="43499" CONTRACTCODE="106882670" GJ_CODE="11130301" CONTRACT_TYPE="1001V51000000000C71O" WHOUSE_CODE="1003" MEMO="工商" SHIPPING_DATE="2017-07-06" PLANTAX_PERSONCODE="">
        <TABLE TABLENAME="SRV_SCSS_SALEORDER_B" CONTRACTCODE="合同号" SELF_ID="销售订单编号" WHOUSE_CODE="发货仓库内码" TOBA_CODE="卷烟企业内码" QUANTITY="数量" ALLOCATEPRICE="万支不含税调拨价" MEMO="合同卷烟备注">
          <ROW ACTION="INSERT" CONTRACTCODE="106882670" SELF_ID="43499" WHOUSE_CODE="1003" TOBA_CODE="127303" QUANTITY="250.000000" ALLOCATEPRICE="1481.000000" MEMO=""/>
        </TABLE>
      </ROW>
      <ROW ACTION="INSERT" ID="43589_1003" PLANTAX_DATE="2017-07-06" SELF_ID="43589" CONTRACTCODE="106882870" GJ_CODE="11130501" CONTRACT_TYPE="1001V51000000000C71O" WHOUSE_CODE="1003" MEMO="工商" SHIPPING_DATE="2017-07-06" PLANTAX_PERSONCODE="">
        <TABLE TABLENAME="SRV_SCSS_SALEORDER_B" CONTRACTCODE="合同号" SELF_ID="销售订单编号" WHOUSE_CODE="发货仓库内码" TOBA_CODE="卷烟企业内码" QUANTITY="数量" ALLOCATEPRICE="万支不含税调拨价" MEMO="合同卷烟备注">
          <ROW ACTION="INSERT" CONTRACTCODE="106882870" SELF_ID="43589" WHOUSE_CODE="1003" TOBA_CODE="196168" QUANTITY="500.000000" ALLOCATEPRICE="1777.000000" MEMO=""/>
        </TABLE>
      </ROW>
      <ROW ACTION="INSERT" ID="43636_1003" PLANTAX_DATE="2017-07-06" SELF_ID="43636" CONTRACTCODE="106882918" GJ_CODE="11130501" CONTRACT_TYPE="1001V51000000000C71O" WHOUSE_CODE="1003" MEMO="工商" SHIPPING_DATE="2017-07-06" PLANTAX_PERSONCODE="">
        <TABLE TABLENAME="SRV_SCSS_SALEORDER_B" CONTRACTCODE="合同号" SELF_ID="销售订单编号" WHOUSE_CODE="发货仓库内码" TOBA_CODE="卷烟企业内码" QUANTITY="数量" ALLOCATEPRICE="万支不含税调拨价" MEMO="合同卷烟备注">
          <ROW ACTION="INSERT" CONTRACTCODE="106882918" SELF_ID="43636" WHOUSE_CODE="1003" TOBA_CODE="126709" QUANTITY="500.000000" ALLOCATEPRICE="1231.000000" MEMO=""/>
        </TABLE>
      </ROW>
    </TABLE>
  </DATA>
</Msg>












操作完成以后我们建一个Java类,用来解析这个NewXML.xml文件:




import java.io

.File; 
import java.io

.FileWriter; 
import java.io

.IOException; 
import java.io

.InputStream; 
import java.util.List; 
 
import org.dom4j.Attribute; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.DocumentHelper; 
import org.dom4j.Element; 
import org.dom4j.ProcessingInstruction; 
import org.dom4j.VisitorSupport; 
import org.dom4j.io

.SAXReader; 
import org.dom4j.io

.XMLWriter; 
 
/**
* Dom4j读写xml
* @author whwang
*/ 
public class TestDom4j { 
    public static void main(String[] args) { 
        read1(); 
        //read2(); 
        //write(); 
    } 
 
    public static void read1() { 
        try { 
            SAXReader reader = new SAXReader(); 
            InputStream in = TestDom4j.class.getClassLoader().getResourceAsStream("NEWFile.xml"); 
            Document doc = reader.read(in); 
            Element root = doc.getRootElement(); 
            readNode(root, ""); 
        } catch (DocumentException e) { 
            e.printStackTrace(); 
        } 
    } 
     
    @SuppressWarnings("unchecked") 
    public static void readNode(Element root, String prefix) { 
        if (root == null) return; 
        // 获取属性 
        List<Attribute> attrs = root.attributes(); 
        if (attrs != null && attrs.size() > 0) { 
            System.err.print(prefix); 
            for (Attribute attr : attrs) { 
                System.err.print(attr.getValue() + "\t"); 
            } 
            System.err.println(); 
        } 
        // 获取他的子节点 
        List<Element> childNodes = root.elements(); 
        prefix += "\t"; 
        for (Element e : childNodes) { 
            readNode(e, prefix); 
        } 
    } 
     
 




运行此main方法,控制台就会打印出你所需要的信息
分享到:
评论

相关推荐

    Android通过webservice连接Sqlserver实例

    这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作...

    WebService教程+实例+代码提示功能WebService实例.rar

    这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...

    webservice测试调用工具WebserviceStudio20

    WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    SqlServer触发器调用WebService

    ### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...

    c++调用webservice(包括静态和动态以及webservice源码)

    然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...

    Idea实现WebService实例

    【标题】:Idea实现WebService实例 在Java开发中,WebService是一种常见的跨平台、跨语言的通信方式,它允许不同的应用程序之间交换数据。IntelliJ IDEA(简称Idea)是广受欢迎的Java集成开发环境,提供了强大的...

    一个简单的WEBSERVICE 例子

    根据提供的文件信息,本文将详细解释一个简单的 WebService 示例,并深入探讨其中的关键概念和技术细节。 ### 一、WebService 概念 #### 1.1 WebService 定义 WebService 是一种支持通过网络进行调用的服务形式,...

    WebService的优势与劣势

    ### WebService的优势与劣势 #### 一、WebService概述 WebService是一种平台独立的、分布式的、基于互联网的应用程序接口(API),它使用标准的Internet协议(如HTTP)进行通信,并使用XML来交换数据。WebService...

    webservice获取List案例

    在本案例中,我们关注的是一个特定的Web服务类型——WebService,它用于获取一个包含泛型对象的List。这个场景在分布式系统、微服务架构或者跨平台数据共享中非常常见。让我们深入探讨一下相关的知识点。 1. **...

    WebService依赖jar以及xml.zip

    WebService是一种基于XML(可扩展标记语言)的互联网通信标准,它允许不同的应用程序之间进行互操作。这个名为"WebService依赖jar以及xml.zip"的压缩包文件包含了一组用于构建和运行WebService所需的重要组件。 ...

    webservice模拟客户端测试工具WebserviceStudio20.rar

    WebserviceStudio20便是一款专门用于模拟Web服务客户端的测试工具,帮助开发者便捷地进行功能验证和性能测试。 WebserviceStudio20的核心功能主要包括以下几点: 1. **SOAP请求构造**:它允许用户直接在界面中输入...

    在WinForm程序中调用WebService

    在WinForm应用程序中调用WebService是一项常见的任务,它允许客户端应用程序与远程服务器上的服务进行交互,从而实现数据交换和功能扩展。以下是如何在WinForm中实现这一操作的详细步骤及涉及的相关知识点: 1. **...

    VC++中WebService服务的调用

    在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...

    C# WebService 客户端 服务器 Json

    本主题聚焦于C#中的WebService客户端和服务器的交互,以及如何利用Json进行数据交换。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写而被广泛应用。 一、C# WebService简介 ...

    webservice接口文档说明.docx

    泛微 Webservice 接口文档说明 泛微 Webservice 接口文档说明是指泛微系统提供的一种基于 XML 的 Web 服务接口,用于实现客户关系管理(CRM)系统与其他系统之间的数据交互。该接口文档提供了接口的使用说明、数据...

    动态调取webservice返回json数据并处理

    这里我们关注的是动态调用WebService并处理返回的JSON数据,然后将这些数据展示在GridView中。这个过程涉及到的技术主要包括:WebService的调用、JSON数据解析以及数据绑定到GridView。 首先,让我们来理解...

    C#webservice调用测试工具

    【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...

    WebServiceStudio C#源码

    WebServiceStudio是一款基于C#开发的轻量级工具,主要用于测试和调试Web服务接口。这个工具的源码提供了深入理解Web服务交互机制的机会,对于学习和开发相关应用具有很高的价值。以下将详细介绍其中涉及的主要知识点...

Global site tag (gtag.js) - Google Analytics