`
nxw_tsp
  • 浏览: 18674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WebService接口开发的实例

 
阅读更多

系统与系统之间WebService的应用还是挺多的。尤其是webService其跨平台的特性,更是让人迷恋,既方便又简洁。下面发一下在实际开发过程中所用到的一个webservice接口的实例。

这是一个价格管理系统调用另一个系统的webservice接口。
前台我们采用输入报文然后点击调用接口的方式,我们先来看一下前端页面这里写图片描述
在文本框中输入一下报文,点击按钮就会调用webservice接口,与另一系统连接。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bfo="http://bfo.webservice.portal.opp.bfo2.sec.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <bfo:checkBFOIINetwork/>
   </soapenv:Body>
</soapenv:Envelope>

js代码段

function ToBfoInteface(){
        showMask();
        var testXmlStr = $("#TestBFOInterface").val();
        if(testXmlStr==null||testXmlStr==""){
            alert("请填写接口报文!");
        }
        $.ajax({
            url: appUrl + '/test/toBFOInterface',
            contentType:'application/xml;charset="UTF-8"',
            type:"post",
            dataType:"text",
            processData: false,
            data : testXmlStr,
            async:false,
            success : function(responseText) {
                hideMask();
                var text = "";
                try{
                    text = responseText;
                }catch(e){
                    text = "error"
                }
                showMsg(text,"调取bfo接口结果:");
                initMenuDataNum();
            }
        });
    }

后台代码段

这是HttpKit类的工具方法
    public static Map<String, String> postSoap3(String url, String xml) {
        Map<String, String> resultMap = new HashMap<String, String>();
        // 返回字符串
        String rs = null;
        // 返回状态
        String resultStatusCode = "";
        // 创建httppost
        HttpPost httpPost = null;
        // 创建参数队列
        CloseableHttpClient httpClient = null;
        try {
            String msg = "";
            if(Log.msetlog.isDebugEnabled()){
                if(xml.indexOf("<TaskId>") > 0){//审批时调用
                    msg = "; 审批时相关TaskId :" + xml.substring(xml.indexOf("<TaskId>")+8, xml.indexOf("</TaskId>"));
                }else if(xml.indexOf("<def:EspaId>") > 0){
                    msg = "; SEQID:" + xml.substring(xml.indexOf("<def:EspaId>")+12, xml.indexOf("</def:EspaId>"));
                }else if(xml.indexOf("<espaId>") > 0){
                    msg = "; SEQID:" + xml.substring(xml.indexOf("<espaId>")+8, xml.indexOf("</espaId>"));
                }else if(xml.indexOf("<wsse:Username>") > 0){
                    msg = "; UserName:" + xml.substring(xml.indexOf("<wsse:Username>")+15, xml.indexOf("</wsse:Username>"));
                }
            }
            if ("https".equals(url.substring(0, 5))) {
                // 使用连接池
                // httpClient=createSSLInsecureClient();
                // 不使用连接池
                Log.msetlog.debug("创建https对应httpClient开始时间:"+DateKit.getNowTime()+msg);
                httpClient = createSSLClientDefault();
                Log.msetlog.debug("创建https对应httpClient结束时间:"+DateKit.getNowTime()+msg);
            } else {
                // httpClient=HttpClients.custom().setConnectionManager(cm).build();
                Log.msetlog.debug("创建httpClient开始时间:"+DateKit.getNowTime()+msg);
                httpClient = HttpClients.createDefault();
                Log.msetlog.debug("创建httpClient结束时间:"+DateKit.getNowTime()+msg);
            }
            Log.msetlog.debug("创建httpPost开始时间:"+DateKit.getNowTime()+msg);
            httpPost = new HttpPost(url);
            Log.msetlog.debug("创建httpPost结束时间:"+DateKit.getNowTime()+msg);
            Log.msetlog.debug("设置httpPost属性开始时间:"+DateKit.getNowTime()+msg);
            HttpEntity re = new StringEntity(xml, "UTF-8");
            httpPost.setHeader("Content-Type",
                    "application/soap+xml; charset=utf-8");
            httpPost.setEntity(re);
            Log.msetlog.debug("设置httpPost属性结束时间:"+DateKit.getNowTime()+msg);
            Log.msetlog.debug("最终执行调用接口开始时间:"+DateKit.getNowTime()+msg);
            CloseableHttpResponse response = httpClient.execute(httpPost);
            Log.msetlog.debug("最终执行调用接口结束时间:"+DateKit.getNowTime()+msg);
            if (response != null) {
                resultStatusCode = String.valueOf(response.getStatusLine()
                        .getStatusCode());
            }
            try {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    rs = EntityUtils.toString(entity, "UTF-8");
                }
            } finally {
                response.close();
                httpPost.abort();
            }
        } catch (Exception e) {
            Log.soaplog.debug("error", e);
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpClient.close();
            } catch (Exception e) {
                Log.soaplog.debug("error", e);
                e.printStackTrace();
            }
        }
        resultMap.put("ResultStatus", resultStatusCode);
        resultMap.put("ResultXML", rs);
        return resultMap;
    }

下面这段代码用来获取xml报文的某个节点的值

public static String getNodeByXml(String xml, String node) {
        Document doc = convertDocFromStr(xml);
        if (doc == null) {
            return null;
        } else {
            Node typeNode = doc.selectSingleNode(".//*[local-name()='" + node
                    + "']");
            if (typeNode == null) {
                return null;
            } else {
                return typeNode.getStringValue();
            }
        }
    }

返回带参的xml数据

 public static String textBfo(String xml){
         Map<String, String> resultMap = HttpKit.postSoap3(bfo_webservice_url,xml);
        String msg = resultMap.get("ResultXML");//返回XML
        String message = HttpKit.getNodeByXml(msg,"message");
        return message;
    }

controller层

  @RequestMapping("/toBFOInterface")
    @ResponseBody
    public Object toBFOInterface(HttpServletRequest request,HttpServletResponse response,@RequestBody String requestBody) {
        String xml = null;
        try {
            xml = URLDecoder.decode(requestBody,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String msg = BFOHttpKit.textBfo(xml);//返回XML
        return msg;
    }

至此,webservice接口已开发完毕。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    java webService接口开发案例

    Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...

    webservice接口调用实例

    本实例主要关注的是如何调用Web Service接口,我们将探讨相关的关键知识点。 首先,理解Web Service的基本概念非常重要。它通过SOAP(Simple Object Access Protocol)协议传输数据,使用WSDL(Web Services ...

    webservice接口开发简单例子

    在本例中,我们讨论的是一个关于WebService接口开发的简单实例,特别是与job调度相关的功能。 首先,项目A中的`CommonJob`类实现了`org.quartz.Job`接口,这是Quartz作业调度框架的一部分。Quartz是一个开源的作业...

    ava调用webservice接口发送短信的小例子(内含所有jar包)

    Javawwebservice接口 webservice接口jar webservice接口例子 解压直接导入到MyEclipse中就可以使用了 方便快捷

    webService接口配置以及接口访问实例

    基于idea开发的简单webservice接口实例,test1为服务端配置了webserivice接口;test2为客户端,通过AXIS方式访问接口,Soap方式服务端能接收到请求信息,但客户端返回信息警告,有兴趣的可以研究一下;带AXIS和soap...

    webservice实例

    你需要定义一个Java接口,然后使用@WebService注解标记该接口,实现接口中的方法以提供服务。 - WSDL生成:JAX-WS可以自动生成WSDL文件,描述服务的接口和消息格式,供客户端调用。 - Tomcat或Jetty等应用服务器:...

    webservice接口调用实例.doc

    通过对文档标题“WebService接口调用实例”以及描述“WebService接口调用实例,接口测试和调用”的解读,我们可以了解到主要内容涉及WebService接口的开发与调用流程。 #### 二、准备工作 1. **编写并测试接口:**...

    WebService接口开发与调用

    ### WebService接口开发与调用 #### 一、概述 在现代软件开发中,不同系统间的通信至关重要。WebService作为一种开放标准的服务实现方式,允许不同语言编写的程序进行交互。本文档将详细介绍如何在两个Web项目中...

    Webservice接口开发简单例子

    【标题】:“Webservice接口开发简单例子” 在IT行业中,Web Service是一种基于互联网的、用于应用程序之间进行交互的标准化通信方式。本示例将探讨如何开发一个简单的Web Service接口,以便不同系统间能够共享数据...

    webservice调用实例,通过HttpClient调用

    Web服务调用是软件开发中的常见任务,尤其是当我们需要跨系统、跨平台集成不同应用程序时。本示例将深入探讨如何使用Apache HttpClient库在Java环境中调用Web服务,特别是通过Maven构建项目的方式进行。HttpClient是...

    飞信WebService接口调用实例源码

    飞信WebService接口调用实例源码 功能:实时接收飞信,发送飞信,添加好友,删除好友等。 使用此飞信短信接口可以方便的在软件中集成飞信的收发功能,应用领域非常广,比如:机房监控及短信控制,新订单短信监控,...

    最简单的webservice接口访问实例

    在本实例中,我们将探讨如何使用Visual Studio 2008(VS2008)来创建和访问最简单的Web Service接口。VS2008是一款强大的开发工具,支持多种开发语言,如C#、VB.NET等,可以方便地创建Web Service应用程序。 一、...

    中国移动移动代理服务器(MAS)系统接口V2.0

    这个系统接口旨在提高企业信息化效率,实现移动设备上的业务流程自动化,同时也为开发者提供了一个标准的接口来开发适用于中国移动网络环境的应用。 1. **MAS系统概述** MAS全称为Mobile Agent Server,它作为一个...

    C#操作webservice(经典入门教程及实例)

    C# 操作WebService(经典入门教程及实例) 以下是根据给定的文件信息生成的相关知识点: 一、WebService 基本概念 WebService 是一种可以接收从 Internet 或者 Intranet 上的其它系统中传递过来的请求,轻量级的...

    飞信WebService接口调用实例VB.NET源码

    飞信WebService接口调用实例VB.NET源码 功能:实时接收飞信,发送飞信,添加好友,删除好友等。 使用此飞信短信接口可以方便的在软件中集成飞信的收发功能,应用领域非常广,比如:机房监控及短信控制,新订单短信...

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

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

    WebService服务器端实例

    以上就是关于"WebService服务器端实例"涉及的主要知识点,涵盖了从基础协议、服务描述、服务发现到具体的开发工具和安全策略。理解并掌握这些概念和技术,对于构建和维护高质量的WebService至关重要。在实际项目中,...

    Java开发WebService实例

    其中,DII方式更为灵活,适用于动态生成WebService接口的情况。 1. **编写Java类**:创建一个简单的Java类,例如`HelloWorld`,并在`webapps/axis`目录下保存其源码。 2. **生成WSDL文件**:使用`helloworld.jws`...

    C#调用WebService实例和开发(wsdl).rar

    本教程将重点讲解如何使用C#来调用WebService以及如何进行WebService的开发,通过理解并实践其中的实例,开发者可以掌握这项关键技能。 首先,WebService是一种基于XML的开放标准,它允许不同系统之间的数据交换。...

    webservice 调用接口实例+归属地查询

    本实例主要讲解如何调用WebService接口,以“归属地查询”为例,帮助理解其工作原理和实现过程。 首先,`mobilecode.wsdl` 文件是Web服务描述语言(Web Service Description Language)文件,它定义了服务的接口、...

Global site tag (gtag.js) - Google Analytics