Java发送WebService请求并解析数据(与大华DSS 7016s2设备对接为例)

这篇具有很好参考价值的文章主要介绍了Java发送WebService请求并解析数据(与大华DSS 7016s2设备对接为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近项目需要与大华的监控设备做对接,需要使用WebService发送请求,并解析数据刷入数据库,总结了一套我认为好理解的方案:

WebService

首先了解一下WebService,跨语言,跨平台的远程调用技术。一共有三种,一般是采用的http、soap协议 。
我举例的这种就是基于soap协议的,我简单的理解就是XML格式携带参数的一种请求方式。
在PostMan中大概长这样:
java发送webservice请求,java菜鸟笔记,java,postman,开发语言

使用Java发送并解析WebService请求:

参考了一些方案我采用的是httpClient这种方式,以下代码是我封装的一个给大华dss监控设备发送请求的方法,使用这种方式的好处是,无需在java代码和xml中来回穿插。xml中内容清晰,可以参考:文章来源地址https://www.toymoban.com/news/detail-548817.html

     * @param ip
     * @param port
     * @param identification 接口标识
     * @param jsonParameter 接口需要传入的json参数
     * @return 返回一个Map, 具体需要拿到解析
     */
    private static JSONObject pullDaHuaData(String ip, String port, String identification, String jsonParameter) throws IOException, DocumentException {
        String xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" +
                "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
                "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
                "  <soap:Body>\n" +
                "    <executeInterface xmlns=\"http://webservice.dhsoft.com\">\n" +
                "      <arg0 xmlns=\"\">" + identification + "</arg0>\n" +
                "      <arg1 xmlns=\"\">{param:" + jsonParameter + "}</arg1>\n" +
                "    </executeInterface>\n" +
                "  </soap:Body>\n" +
                "</soap:Envelope>";
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost("http://" + ip + ":" + port + "/admin/services/AdminWebService?wsdl");
        httpPost.setHeader("Context-Type", "text/xml;charset=UTF-8");
        CloseableHttpResponse response = null;

        StringEntity entity = new StringEntity(xml, "UTF-8");
        httpPost.setEntity(entity);
        response = httpClient.execute(httpPost);
        HttpEntity responseEntity = response.getEntity();
        Map map = parseSoap(EntityUtils.toString(responseEntity));
        return (JSONObject) JSONObject.parse(String.valueOf(map.get("execute")));
    }

    /**
     * 解析WebService响应回的soap
     *
     * @param soap
     * @return
     * @throws DocumentException
     * @throws DocumentException
     */
    private static Map parseSoap(String soap) throws DocumentException, DocumentException {
        org.dom4j.Document doc = DocumentHelper.parseText(soap);//报文转成doc对象
        Element root = doc.getRootElement();//获取根元素,准备递归解析这个XML树
        Map<String, Object> map = new HashMap<String, Object>();
        getCode(root, map);
        return map;
    }

    private static void getCode(Element root, Map<String, Object> map) {
        if (root.elements() != null) {
            List<Element> list = root.elements();//如果当前跟节点有子节点,找到子节点
            for (Element e : list) {//遍历每个节点
                if (e.elements().size() > 0) {
                    getCode(e, map);//当前节点不为空的话,递归遍历子节点;
                }
                if (e.elements().size() == 0) {
                    map.put(e.getName(), e.getTextTrim());
                }//如果为叶子节点,那么直接把名字和值放入map
            }
        }

    }

到了这里,关于Java发送WebService请求并解析数据(与大华DSS 7016s2设备对接为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 大华 DSs 数字监控系统是大华开发的一款安

    2024年01月17日
    浏览(39)
  • java发送soap请求和解析soap的响应

    2024年02月11日
    浏览(54)
  • 使用HTTP方式发送请求及json数据的接收和解析

    目录 需求 请求端 1,添加依赖 2,请求对象 3,请求工具类 4,请求测试(事先开启接收端的服务) 接收端 数据请求模拟 本项目需要通过向对端第三方项目发送一个http的post类型的请求,并且指定了一些请求字段,数据传输采用了json,对请求头没有其他特殊要求,所以这里写

    2024年01月17日
    浏览(84)
  • 138. 第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析

    本教程第 37 篇文章,我们介绍了如何在 SAP ABAP 系统 SICF 事务码 里,开发一段 ABAP 代码,用来响应通过浏览器或者第三方工具,比如 curl,Postman 发起的 HTTP 请求。 31. 如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求 在实际的 ABAP 集成项目中,这种方式非常使用。

    2024年03月21日
    浏览(58)
  • Java工具类:使用RestTemplate请求WebService接口

    对接第三方提供的 WebService 接口,早期的调用方式过于复杂繁琐,所以使用 RestTemplate 进行调用 注:除了 RestTemplate 之外, HttpURLConnection 等也可以用来调用webservice接口 如果需要将xml转为Json,可参考:

    2024年01月22日
    浏览(62)
  • Java 调用 WebService 、java调用Soap请求、Java对接soap接口

    工作第一次遇到对接soap接口,觉得有必要记录一下,毕竟踩了不少坑,网上帖子很多但大都不全,也不可能完全满足自己的需求,于是就有了下面的代码: 除了只是借鉴, 注意事项: 1.http://ip:port/xxx/xxx/soap?wsdl有些soap接口,对面是不需要穿?wsdl对接时要问出清 2. httpPost.set

    2024年02月05日
    浏览(52)
  • java http get post 和 发送json数据请求

    浏览器请求效果       main调用  

    2024年02月16日
    浏览(52)
  • Java调用WebService接口,SOAP协议HTTP请求返回XML对象

    Java调用Web service接口SOAP协议HTTP请求,解析返回的XML字符串: 1. 使用Java的HTTP库发送SOAP请求,并接收返回的响应。 可以使用Java的HttpURLConnection、Apache HttpClient等库。 2. 将返回的响应转换为字符串。 3. 解析XML字符串 ,可以使用Java的DOM解析器或者其他第三方库,如JDOM、DOM4J等。

    2024年01月19日
    浏览(50)
  • Python发送Post请求及解析响应结果

    有时候遇到请求url中有很多参数。 1.1 示例1 accounts和pwd请到http://shop-xo.hctestedu.com/注册。 执行结果: 1.2 示例2 使用不定长参数 params,将url中需要的参数单独封装。 执行结果: 用type()查看response.text的类型,是str 执行结果: 用type()查看response.json()的类型,是dict 执行结果:

    2023年04月24日
    浏览(86)
  • 微信小程序解析webservice返回的xml格式数据

    默认情况下微信小程序不是npm所管理的,所以第一步我们需要将其变成npm管理的项目 项目根目录下输入命令 npm init ,此时会出现一些基本信息的填写(当然直接回车使用默认项也可以)成功后项目根目录下会出现package.json文件,如图: 项目根目录输入命令 npm install xmldom 安

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包