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)


相关推荐

  • EXCEL countif函数多条件

    在MSEXCEL中,countif如果要满足多个条件怎么办呢?1、答案就是:使用条件集合{}和sum函数。即在countif()第二个参数中使用条件集合{},然后用sum()函数求满足这些条件的

    2021年12月26日
  • 服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…

    服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…______________________________________________________________________________________________________________新风系统的方案设计方法:设计方案时,即便再简单的方案,我们也应该先做方案、再扒图纸、作出预算的程序,这样我们就不会丢项、报错。复杂的项目,应该编制联系人表格;方便现场沟通…

  • asp.net 微信分享到朋友圈,分享给朋友接口

    asp.net 微信分享到朋友圈,分享给朋友接口微信分享到朋友圈,分享给朋友说明:转载:http://www.cnblogs.com/ysyn/archive/2015/07/23/4665897.html、引言:  工作中开发微信网站,简称微网站。由于微网站的分享内容是系统自动选取的当前网址,客户需要改变分享的内容,即点击屏幕右上角的分享按钮,选择发送给朋友和发送到朋友圈,其中的内容和图片需要自定义。于

  • 微信 网页授权_微信解除其他app授权

    微信 网页授权_微信解除其他app授权一、背景近期实现微信招聘公众号的需求,需要在微信用户同意公众号授权后,获取到微信用户信息。这一步操作在前端无法完成,所以这里我们使用了C#WebApi项目,通过接口实现后台获取微信用户数据再重定向到前端页面。二、思路具体而言,微信网页授权流程分为四步:1、引导用户进入授权页面同意授权,获取code;2、通过code换取网页授权access_toke…

    2022年10月25日
  • maven本地仓库默认路径_maven本地仓库

    maven本地仓库默认路径_maven本地仓库Maven配置本地仓库的路径1.打开maven安装路径\conf\settings.xml2.在50行左右有下面,默认位置在c盘用户下的/.m2/repository中<!–localRepository|Thepathtothelocalrepositorymavenwillusetostoreartifacts.||Defa…

  • linux提示未找到命令unzip和zip解决方法[通俗易懂]

    linux提示未找到命令unzip和zip解决方法[通俗易懂]linux中使用unzip和zip命令时,提示未找到命令解决方案:安装zip和unzip命令:yumlist|grepzip/unzipyuminstallzipyuminstallunzip

发表回复

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

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