使用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这两工具非常棒,使用工具直接生成函数调用链图,帮助 ...
随机推荐
- WPF 轨迹动画
1.后台 public MainWindow() { InitializeComponent(); /// <summary> /// Window2.xaml 的交互逻辑 /// < ...
- 《OKR源于英特尔和谷歌的目标管理利器》读书笔记
17年10月下旬至11月,因团队需要改变考核方式以及更好的服务业务,Q4将尝试OKR的方式进行考核,故阅读了此书,有些想法与笔记. OKR定义:OKR是一套严密的思考框架和持续的纪律要求,旨在确保员工 ...
- C#如何将光标定位到文本框末尾(最后一位)
代码如下:private void Movetoend(){//让文本框获取焦点this.TextBox1.Focus();//设置光标的位置到文本尾this.TextBox1.Select(this ...
- CF652F 题解
题意 传送门 在一个长度为 \(m\) 的圆环上有 \(n\) 只初始位置互不相同的蚂蚁,每只蚂蚁的速度都为 \(1\),初始方向为顺时针或逆时针:两只运动方向不同的蚂蚁相遇时会调转方向,问 \(t\ ...
- TODOList小黄条
TODOList http://www.yynote.cn/ 总结 windows中的神器
- Django 之 ORM2
1. 多表操作 1.1 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者 ...
- js实现不同的域名 输出不同的结果
js实现域名判断后跳转到指定网址,也适用于同一虚拟空间放多个网站: <script> try { if(self.location == "http://apple.baidu. ...
- layui弹出层layer点击关闭还会显示在html中
我的弹出层是这样定义的: 它的属性为display:none <div id="divlayer" style="display:none"> &l ...
- Python的入门学习之 Day 7——from“夜曲编程”
Day 7 time: 2021.8.4. 今天主要将"if-else"再扩展, 得到"if-elif-else"模型.它与"if-else" ...
- 4、Redis底层原理(持久化+分布式锁)
Redis底层原理 持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即 ...