WebService接口

WebService接口这是我在做对外部系统推送数据时自己写的WebService推送接口工具类,有几点需要注意1、我们调用对方的WebService接口,对方会给一个WebService接口的地址,供我们访问:http:

大家好,又见面了,我是你们的朋友全栈君。

 

这是我在做对外部系统推送数据时自己写的WebService推送接口工具类,有几点需要注意

1、我们调用对方的WebService接口,对方会给一个WebService接口的地址,供我们访问:http://localhost:8080/cgs-ui/services/NC_TFM_INF_FundService?wsdl

直接访问这个地址之后我们看到对方接口中可以供调用的方法名,如下:

<span role="heading" aria-level="2">WebService接口

 

 2、具体的调用都在下方代码中,代码中的一些参数,都有注释

 1 package com.ritoinfo.tf2m.arapPayment.util;  2  3 import java.io.ByteArrayInputStream;  4 import java.io.IOException;  5 import java.io.InputStream;  6 import java.util.HashMap;  7 import java.util.Map;  8  9 import org.apache.commons.httpclient.HttpClient;  10 import org.apache.commons.httpclient.HttpException;  11 import org.apache.commons.httpclient.methods.InputStreamRequestEntity;  12 import org.apache.commons.httpclient.methods.PostMethod;  13 import org.apache.commons.httpclient.methods.RequestEntity;  14 import org.apache.commons.httpclient.params.HttpMethodParams;  15 import org.apache.commons.logging.Log;  16 import org.apache.commons.logging.LogFactory;  17  18 import com.longtop.tfm.bas.util.UtilString;  19  20 /**  21 * @Description <br/>  22 * @author  23 * @version  24 */  25 public class WebServiceUtil {  26  27 public static final Log log = LogFactory.getLog(WebServiceUtil.class);  28  29 /**  30  * @Title: send  31  * @Description: 发送请求  32  * @param @param map  33  * @param @return 参数  34  * @return Map 返回类型  35  * @throws  36 */  37 public static Map send(Map map){  38  39 //组装报文  40 String sendXml = getSoapMsg(map);  41 log.error("发送出去的报文:" + sendXml);  42  43 // 创建httpClient实例对象  44 HttpClient httpClient = new HttpClient();  45 // 设置httpClient连接主机服务器超时时间:15000毫秒  46 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);  47 // 创建post请求方法实例对象  48 PostMethod postMethod = new PostMethod((String) map.get("path"));  49 // 设置post请求超时时间  50 postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);  51 // 在头文件中设置转码  52 postMethod.addRequestHeader("Content-Type","text/xml;charset=UTF-8");  53 Map returnMap = new HashMap<Object, Object>();  54 try {  55 //然后把Soap请求数据添加到PostMethod中  56 byte[] b = null;  57 b = sendXml.getBytes("utf-8");  58 InputStream is = new ByteArrayInputStream(b, 0, b.length);  59 RequestEntity re = new InputStreamRequestEntity(is, b.length);  60  postMethod.setRequestEntity(re);  61 // 发送请求  62  httpClient.executeMethod(postMethod);  63 // 返回的结果  64 String result = postMethod.getResponseBodyAsString();  65 map.put("result", result);  66 // 将返回报文中的转义字符进行转换  67 returnMap = analysisXml(map);  68 } catch (HttpException e) {  69 log.error("发送HTPP请求报错!!!");  70  e.printStackTrace();  71 } catch (IOException e) {  72 log.error("发送HTPP请求报错!!!");  73  e.printStackTrace();  74  }  75  postMethod.releaseConnection();  76  77 return returnMap;  78  }  79  80 /**  81  * @Title: getSoapMsg  82  * @Description: 组装发送的soapUI报文  83  * 具体的WebService的发送的报文需要接收放提供模板,然后将下面的报文进行改进  84  * methodName是我们调用对方WebService接口需要调用的方法名,在对方的wsdl文件中也会有体现的  85  * @param @param map  86  * @param @return 参数  87  * @return String 返回类型  88  * @throws  89 */  90 private static String getSoapMsg(Map map) {  91 StringBuffer sb = new StringBuffer();  92 sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"").append("http://service.webservice.core.data.ridol.ritoinfo.com/").append("\">");  93 sb.append("<soapenv:Header/>");  94 sb.append("<soapenv:Body>");  95 sb.append("<ser:").append(map.get("methodName")).append(">");  96 sb.append("<xml>");  97 sb.append("<![CDATA[");  98 // =========要发送的报文===============  99 sb.append(map.get("xml")); 100 // ================================= 101 sb.append("]]>"); 102 sb.append("</xml>"); 103 sb.append("</ser:").append(map.get("methodName")).append(">"); 104 sb.append("</soapenv:Body>"); 105 sb.append("</soapenv:Envelope>"); 106 return sb.toString(); 107  } 108 109 /** 110  * @Title: analysisXml 111  * @Description: 转义特殊字符并将结果输出 112  * @param @param map 113  * @param @return 参数 114  * @return Map 返回类型 115  * @throws 116 */ 117 private static Map analysisXml(Map map){ 118 Map returnMap = new HashMap<Object, Object>(); 119 String result = (String) map.get("result"); 120 if(UtilString.isNotEmpty(result)){ 121 result = result.replaceAll("&lt;","<"); 122 result = result.replaceAll("&gt;",">"); 123 result = result.replaceAll("&apos;","'"); 124 result = result.replaceAll("&quot;","\""); 125 result = result.replaceAll("&#xD;","\r"); 126 result = result.replaceAll("&amp;"," "); 127 result = result.replaceAll("&#x9;"," "); 128 129 int statusBegin = result.indexOf("<status>"); 130 int statusEnd = result.indexOf("</status>"); 131 String status = result.substring((statusBegin + "<status>".length()),statusEnd); 132 133 int messageBegin = result.indexOf("<message>"); 134 int messageEnd = result.indexOf("</message>"); 135 String message = result.substring((messageBegin + "<message>".length()),messageEnd); 136 returnMap.put("status", status); 137 returnMap.put("message", message); 138 returnMap.put("result", result); 139  } 140 return returnMap; 141  } 142 }

 

package com.ritoinfo.tf2m.arapPayment.util;
import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Map;
import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.methods.InputStreamRequestEntity;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.RequestEntity;import org.apache.commons.httpclient.params.HttpMethodParams;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;
import com.longtop.tfm.bas.util.UtilString;
/*** @Description  <br/>* @author * @version */public class WebServiceUtil {public static final Log log = LogFactory.getLog(WebServiceUtil.class);/** * @Title: send * @Description: 发送请求 * @param @param map * @param @return 参数 * @return Map 返回类型 * @throws */public static Map send(Map map){//组装报文String sendXml = getSoapMsg(map);log.error(“发送出去的报文:” + sendXml);// 创建httpClient实例对象        HttpClient httpClient = new HttpClient();        // 设置httpClient连接主机服务器超时时间:15000毫秒        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);        // 创建post请求方法实例对象        PostMethod postMethod = new PostMethod((String) map.get(“path”));        // 设置post请求超时时间        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);// 在头文件中设置转码        postMethod.addRequestHeader(“Content-Type”,”text/xml;charset=UTF-8″);        Map returnMap = new HashMap<Object, Object>();        try {        //然后把Soap请求数据添加到PostMethod中    byte[] b = null;    b = sendXml.getBytes(“utf-8”);    InputStream is = new ByteArrayInputStream(b, 0, b.length);    RequestEntity re = new InputStreamRequestEntity(is, b.length);    postMethod.setRequestEntity(re);    // 发送请求httpClient.executeMethod(postMethod);// 返回的结果String result = postMethod.getResponseBodyAsString();map.put(“result”, result);// 将返回报文中的转义字符进行转换returnMap = analysisXml(map);} catch (HttpException e) {log.error(“发送HTPP请求报错!!!”);e.printStackTrace();} catch (IOException e) {log.error(“发送HTPP请求报错!!!”);e.printStackTrace();}        postMethod.releaseConnection();
return returnMap;}/** * @Title: getSoapMsg * @Description: 组装发送的soapUI报文 * 具体的WebService的发送的报文需要接收放提供模板,然后将下面的报文进行改进 * methodName是我们调用对方WebService接口需要调用的方法名,在对方的wsdl文件中也会有体现的 * @param @param map * @param @return 参数 * @return String 返回类型 * @throws */private static String getSoapMsg(Map map) {StringBuffer sb = new StringBuffer();sb.append(“<soapenv:Envelope xmlns:soapenv=\”http://schemas.xmlsoap.org/soap/envelope/\” xmlns:ser=\””).append(“http://service.webservice.core.data.ridol.ritoinfo.com/”).append(“\”>”);sb.append(“<soapenv:Header/>”);sb.append(“<soapenv:Body>”);sb.append(“<ser:”).append(map.get(“methodName”)).append(“>”);sb.append(“<xml>”);sb.append(“<![CDATA[“);// =========要发送的报文===============sb.append(map.get(“xml”));// =================================sb.append(“]]>”);sb.append(“</xml>”);sb.append(“</ser:”).append(map.get(“methodName”)).append(“>”);sb.append(“</soapenv:Body>”);sb.append(“</soapenv:Envelope>”);return sb.toString();}/** * @Title: analysisXml * @Description: 转义特殊字符并将结果输出 * @param @param map * @param @return 参数 * @return Map 返回类型 * @throws */private static Map analysisXml(Map map){Map returnMap = new HashMap<Object, Object>();String result = (String) map.get(“result”);if(UtilString.isNotEmpty(result)){result = result.replaceAll(“&lt;”,”<“); result = result.replaceAll(“&gt;”,”>”); result = result.replaceAll(“&apos;”,”‘”); result = result.replaceAll(“&quot;”,”\””); result = result.replaceAll(“&#xD;”,”\r”); result = result.replaceAll(“&amp;”,” “); result = result.replaceAll(“&#x9;”,” “);int statusBegin = result.indexOf(“<status>”);    int statusEnd = result.indexOf(“</status>”);    String status = result.substring((statusBegin + “<status>”.length()),statusEnd);        int messageBegin = result.indexOf(“<message>”);    int messageEnd = result.indexOf(“</message>”);    String message = result.substring((messageBegin + “<message>”.length()),messageEnd);    returnMap.put(“status”, status);    returnMap.put(“message”, message);    returnMap.put(“result”, result);}return returnMap;}}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154740.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Python爬虫入门教程 1-100 CentOS环境安装[通俗易懂]

    Python爬虫入门教程 1-100 CentOS环境安装[通俗易懂]你好,当你打开这个文档的时候,我知道,你想要的是什么!Python爬虫,如何快速的学会Python爬虫,是你最期待的事情,可是这个事情应该没有想象中的那么容易,况且你的编程底子还不一定好,这套课程,没有你想要的Python基础,没有变量,循环,数组等基础知识,因为我不想在那些你可以直接快速学会的地方,去浪费你的时间。好了,这套课程是基于Python3.0以上写的,操作系统我使用的是…

  • 高中必备学习软件_有那些免费好用的高中学习软件?[通俗易懂]

    高中必备学习软件_有那些免费好用的高中学习软件?[通俗易懂]刷题类1.猿题库记录一天时间app安卓1.爱今天2.timingIOS1.时间块2.atimelogger3.ihour4.nowthenfree专注类1.forest2.番茄todo背单词app这个感觉好多人都知道1.沪江开心词场2.扇贝单词3.百词斩4.知米背单词5.墨墨背单词6.不背单词7.单词日记8.易呗背单词听力方面app可可英语英语流利说每日英语听力沪江听力网易云的电台朗易思听缤…

  • layui弹框传值_LAYUI弹出层详解

    layui弹框传值_LAYUI弹出层详解还是一步步展示把首先,layer可以独立使用,也可以通过Layui模块化使用。我个人一直是用的模块化的所以下面素有的都是基于模块化的。引入好相关文件就可以开始啦今天放图片把试着学一下放图片1.最简单的弹层,这个弹层的效果其实就是一个加了特效和样式的alert();代码如下:layui.use(“layer”,function(){varlayer=layui.layer;la…

  • c++开源库rapidxml介绍与示例

    c++开源库rapidxml介绍与示例官方地址:http://rapidxml.sourceforge.net/官方手册:http://rapidxml.sourceforge.net/manual.html也可以在github上下载到别人上传的rapidxml:https://github.com/dwd/rapidxml1.头文件一般我们用到的头文件只有这三个#include”rapidxml/rapidxml.hpp”

  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决一:redis雪崩redis雪崩是指redis在某个时间大量失效,突然造成数据库访问压力急剧增大,像雪崩一样,redis雪崩危害巨大,甚至有可能服务器宕机,给公司造成巨大的经济损失。解决方案:设置超时时间的时候要设置随机值,不要设置固定值*缓存雪崩:key在同一时间失效,导致大量请求去访问数据库*返回min和max之间的一个随机秒数 privateLonggetRandomExpirationTime(Integermin,Integermax){

  • pychan激活码【在线注册码/序列号/破解码】

    pychan激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号