`
wangliju0811
  • 浏览: 1567 次
  • 性别: 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测试调用工具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集成开发环境,提供了强大的...

Global site tag (gtag.js) - Google Analytics