先前没有搞过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方法,控制台就会打印出你所需要的信息
分享到:
相关推荐
这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作...
这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...
WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...
然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...
【标题】:Idea实现WebService实例 在Java开发中,WebService是一种常见的跨平台、跨语言的通信方式,它允许不同的应用程序之间交换数据。IntelliJ IDEA(简称Idea)是广受欢迎的Java集成开发环境,提供了强大的...
根据提供的文件信息,本文将详细解释一个简单的 WebService 示例,并深入探讨其中的关键概念和技术细节。 ### 一、WebService 概念 #### 1.1 WebService 定义 WebService 是一种支持通过网络进行调用的服务形式,...
### WebService的优势与劣势 #### 一、WebService概述 WebService是一种平台独立的、分布式的、基于互联网的应用程序接口(API),它使用标准的Internet协议(如HTTP)进行通信,并使用XML来交换数据。WebService...
在本案例中,我们关注的是一个特定的Web服务类型——WebService,它用于获取一个包含泛型对象的List。这个场景在分布式系统、微服务架构或者跨平台数据共享中非常常见。让我们深入探讨一下相关的知识点。 1. **...
WebService是一种基于XML(可扩展标记语言)的互联网通信标准,它允许不同的应用程序之间进行互操作。这个名为"WebService依赖jar以及xml.zip"的压缩包文件包含了一组用于构建和运行WebService所需的重要组件。 ...
在WinForm应用程序中调用WebService是一项常见的任务,它允许客户端应用程序与远程服务器上的服务进行交互,从而实现数据交换和功能扩展。以下是如何在WinForm中实现这一操作的详细步骤及涉及的相关知识点: 1. **...
在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...
本主题聚焦于C#中的WebService客户端和服务器的交互,以及如何利用Json进行数据交换。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写而被广泛应用。 一、C# WebService简介 ...
WebserviceStudio20便是一款专门用于模拟Web服务客户端的测试工具,帮助开发者便捷地进行功能验证和性能测试。 WebserviceStudio20的核心功能主要包括以下几点: 1. **SOAP请求构造**:它允许用户直接在界面中输入...
泛微 Webservice 接口文档说明 泛微 Webservice 接口文档说明是指泛微系统提供的一种基于 XML 的 Web 服务接口,用于实现客户关系管理(CRM)系统与其他系统之间的数据交互。该接口文档提供了接口的使用说明、数据...
这里我们关注的是动态调用WebService并处理返回的JSON数据,然后将这些数据展示在GridView中。这个过程涉及到的技术主要包括:WebService的调用、JSON数据解析以及数据绑定到GridView。 首先,让我们来理解...
【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...
### BCB调用WebService方法详解及常见问题排查 #### 一、引言 在现代软件开发中,跨平台服务通信已成为一种常态。其中,WebService作为一种常见的远程服务调用方式,在不同语言之间进行交互时扮演着重要的角色。...