使用IDEA的webservice工具解析生成的客户端调用远程接口
由于这个接口的报文格式比较麻烦,是XML的请求头加上JSON格式的请求体,所以看起来比较复杂,也可以用RPC的方式调用,那样需要将请求头和请求体,响应头和响应体建实体。
public JSONObject sendReq(PortTypeEnum portTypeEnum,JSONObject reqBody){
Main main = new Main();
MainPortType mainPortType = main.getMainHttpSoap11Endpoint();
SendXmlResponse sendXmlResponse = new SendXmlResponse();
sendXmlResponse.setOutBody("");
sendXmlResponse.setOutHead("");
//修改请求URL
BindingProvider bp = (BindingProvider)mainPortType;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,getEndPointURL());
//设置请求头信息
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//拼接请求头信息
String sendHead = "<![CDATA[<?xml version=\"1.0 \"encoding\" UTF-8\" ?>" +
"<reqInfo>" +
"<clientID>" + getClientID() + "</clientID>" +
"<reqTime>" + sf.format(new Date()) + "</reqTime>" +
"<tarService>" + portTypeEnum.getPortValue() + "</tarService>" +
"<reqPWD>" + MD5Util.MD5(getReqPWD()) + "</reqPWD>" +
"<Code></Code>" +
"<Message></Message>" +
"</reqInfo>]]>";
//响应头体信息
Holder<String> outHead = new Holder<String>(sendXmlResponse.getOutHead());
Holder<String> outBody = new Holder<String>(sendXmlResponse.getOutBody());
logger.info("调用远程共享接口,请求方法:{}", portTypeEnum.getDescribe());
logger.info("调用远程共享接口,请求参数:{}", reqBody.toJSONString());
//发送请求
mainPortType.sendXml(sendHead, reqBody.toJSONString(), outHead, outBody);
logger.info("调用远程共享接口,返回头:{}", outHead.value);
logger.info("调用远程共享接口,返回体:{}", outBody.value);
//记录日志
FaiBusinessLog log = new FaiBusinessLog();
log.setOperCreateTime(sf.format(new Date()));
log.setOperMethod(portTypeEnum.getPortName());
log.setOperUserId(UserContextHolder.getCurrentUser().getUserCode());
log.setOperUserName(UserContextHolder.getCurrentUser().getUserNameCn());
log.setOperRequest(sendHead + "\n" + reqBody.toJSONString());
log.setOperResponse(outHead.value + "\n" + outBody.value);
logger.info(log.toString());
faiBusinessLogService.save(log);
JSONObject re = new JSONObject();
if (outBody.value == null){
JSONObject jsonObject = OutHead.xmlToJSONObject(outHead.value);
logger.info("远程接口调用失败,{}",jsonObject);
return jsonObject;
}
logger.info("调用远程共享接口,返回参数:{}",outBody.value);
re.getJSONObject(outBody.value);
re = JSONObject.parseObject(outBody.value);
if (re.getString("status") == null){
re.put("status","共享接口返回为null,请联系共享人员处理");
}
re.put("sendBody",reqBody.toJSONString());
return re;
}
使用IDEA的webservice工具解析生成的客户端调用远程接口的更多相关文章
- Java模拟http请求调用远程接口工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- 最终版-perl工具解析数据库的报告文件0120
********************需要根据自己的实际环境修改哦**************************** ******************** 1. 收集awr报告样本 a ...
- 带SSL证书的httpclient 远程接口工具类
package com.iups.wx.util; import java.io.IOException; import java.io.UnsupportedEncodingException; i ...
- 用JDK自带的工具生成客户端调用Webservice的代码
JAVA下客户端调用Webservice代码简直是让人心生畏惧,今日尝试,做记录如下,参考网上的众多解决方案,下面这种方式是比较简单的. 在jdk的bin目录下有一个wsimport.exe的工具,使 ...
- 命令行工具解析Crash文件,dSYM文件进行符号化
备份 文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...
- VS添加WebService工具
最近在做和WebService相关的项目,因为只是在学校里面用过,出来工作一直没有用到,所以不是很熟悉,于是自己配置了一个WebService工具给添加到了VS(VisualStudio)里面,其实就 ...
- Chromium的Grit工具解析
转载请注明出处:http://www.cnblogs.com/fangkm/p/3405959.html Chromium项目采用Grit工具来打包生成程序需要的资源,如图片资源.字符串资源等,尤其是 ...
- 根据wsdl文件,Java工程自动生成webservice客户端调用
根据wsdl文件,Java工程自动生成webservice客户端调用 1,工具:带有webservice插件的myeclips 2,步骤: (1),新建一个Java工程:relationship (2 ...
- 根据wsdl文件,Web工程自动生成webservice客户端调用
根据wsdl文件,Web工程自动生成webservice客户端调用 1,工具:带有webservice插件的eclips 2,步骤: (1),新建一个Web工程:WSDLTest (2),浏览器访问W ...
- doxygen+ graphviz 开源工具生成源码调用树的wiki
当拿到一含有大量代码的工程怎么看?!这时一个好的代码分析工具非常有用,网上有很多开源工具,但资料都参差不齐,偶然发现doxygen+ graphviz这两工具非常棒,使用工具直接生成函数调用链图,帮助 ...
随机推荐
- 大数据才是重点,Oracle、SQL Server成昨日黄花?
转自:https://zhuanlan.zhihu.com/p/100761130 引子有人在某个专注SQL的公众号留言如下: 对SQL Server的鄙视这个留言触碰到一个非常敏感的问题:搞关系型数 ...
- CF1033E 题解
题意 传送门 交互题,给定一个简单连通图,你可以询问一个点集 \(s\),返回其导出子图的边数.判断此图是否为二分图:若是,输出其中一部点的集合:否则输出任一个奇环.最多询问 \(20000\) 次. ...
- k3s 部署应用
部署k3s 环境 名称 ip地址 cpu 内存 k3s-master 10.65.91.53 4c 8G k3s-node 10.65.91.52 4c 8G master 与 node 节点 # 改 ...
- 2022-4-7内部群每日三题-清辉PMP
1.公司聘用一名项目经理来协调一个期限紧迫的敏捷项目,项目经理和敏捷团队都由一位项目组合经理管理,该项目组合经理倾向于根据需要将开发人员重新分配给其他紧急事项,当项目经理与其接洽时,项目组合经理坚持认 ...
- 关于Windows系统TCP参数修改
在做压测时,往往会因为TCP连接数较少,导致并发数上不去就报错,下面我们一起看看如何修改Windows的TCP参数 1.本地注册表 打开注册表快捷键:Windows+R建,输入regedit,按下键盘 ...
- JS篇(008)-require 与 import 的区别
答案:两者的加载方式不同.规范不同 第一.两者的加载方式不同,require 是在运行时加载,而 import 是在编译时加载 require('./a')(); // a 模块是一个函数,立即执行 ...
- vs2015当前不会命中断点,还没有为该文档
经百度,需在项目>项目属性>生成>优化代码的勾去掉>保存>再次F11调试可解决
- el-dropdown-item 添加点击 事件无效 (vue)
如图 无效!!! 为什么呢?? 想了一下,可能是因为 el-dropdown-item 没有自定义click事件 so! 解决办法就是 添加原生事件 : @click.native 还有 ...
- vue后台管理系统——商品管理模块
电商后台管理系统的功能--商品管理模块 商品管理概述 商品管理模块用于维护电商平台的商品信息,包括商品的类型.参数.图片.详情等信息. 通过商品管理模块可以实现商品的添加.修改.展示和删除等功能. 1 ...
- 【逆向】CVE-2017-8570漏洞分析调试技巧
前言 CVE-2017-8570是一个逻辑型漏洞,该漏洞利用复合Moniker绕过了CVE-2017-0199的更新补丁,可以在Office文档中执行任意SCT(Windows Script Comp ...