使用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这两工具非常棒,使用工具直接生成函数调用链图,帮助 ...
随机推荐
- docker删除image
删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...
- PHP统计在线用户数量
一段经典的php统计在线用户数量的代码,一起学习分享. <?php /** * Created by PhpStorm. * User: jifei * Date: 15/11/24 * ...
- Codeforces Round #781 (Div. 2) - D. GCD Guess
GCD + 位运算 [Problem - 1665D - Codeforces](https://codeforces.com/problemset/problem/1627/D) 题意 交互题,有一 ...
- php 虚拟化 linux 入侵检测交作业 不要太nice
#inclide<iostream> using namespace std; int main() { cout<<"暂时自闭一会er"; }
- 请求/响应拦截器 给请求添加token认证
- 2022-04-22内部群每日三题-清辉PMP
1.供应商建议项目经理,为了满足要求的规格,需要更换特定材料.为确保成本基准不受影响,项目经理应该审查下列哪一项? A.成本预测 B.挣值(EV)分析 C.管理储备 D.应急储备 2.项目经理确定项目 ...
- vue-drag-resize + html2canvas合成图片并下载
https://blog.csdn.net/weixin_43923659/article/details/114701048
- 计算机意外地重新启动或遇到错误windows安装无法继续解决方法
计算机意外地重新启动或遇到错误windows安装无法继续解决步骤如下: 当win10在安装过程中一直卡在"海内存知己,天涯若比邻"时同样实用 解决方法: 按住shift+f10(或 ...
- windows 和 linux 之间的文件传输操作
参考:http://www.jb51.net/article/123378.htm 本文介绍,如何实现 windows 主机与 linux 虚拟机之间的文件传输. 一.获取虚拟机 IP 地址 要实现 ...
- linux修改网络
如何修改ip 临时方法: ifconfig DIVICE IP netmask NETMASK 知识临时修改ip,重启或重启网络恢复 在一个网卡上设置多个ip ifconfig DEVICE:NUMB ...