一、接受请求的http数据

  1、接受客户请求的数据,例如xml数据格式,代码如下:

    此代码相当于服务端

public String analyzeWeixinXMLStr(HttpServletRequest request){
String xmlStr = null;
try
{
BufferedReader reader = request.getReader();
String temp = null;
StringBuffer requestXml = new StringBuffer();
while((temp = reader.readLine()) != null)
{
requestXml.append(temp);
}
//System.out.println(requestXml.toString());
if(requestXml.toString().length()>0){
// 转码,解决乱码的问题
xmlStr = new String(requestXml.toString().getBytes("iso8859-1"), "UTF-8");
}
}
catch (Exception e)
{
xmlStr = null;
OttExecutionContext.error(e,"WxCommBiz.analyzeWeixinXMLStr is error");
}
return xmlStr;
}

  2、将xml的数据格式转换为map,便于获取,代码如下:

public HashMap<String, String> analyzeWeixinXMLHashMap(String requestXml){
HashMap<String, String> paramsXmlMap = null;
try
{
if(requestXml.toString().length()>0){
paramsXmlMap = new HashMap<String, String>();// 获取微信服务发送请求,并返回第一层级json格式数据
Document document = DocumentHelper.parseText(requestXml);
Element items = document.getRootElement();
for (Iterator i = items.elementIterator(); i.hasNext();)
{
Element item = (Element) i.next();
paramsXmlMap.put(item.getName(), item.getText());
}
}
}
catch (Exception e)
{
paramsXmlMap = null;
OttExecutionContext.error(e,"WxCommBiz.analyzeWeixinXMLHashMap is error");
}
return paramsXmlMap;
}

  3、将xml格式的数据推送给接口服务器,并获取返回结果;

    此代码相当于客服端

    public String pushMsg(String reqXml) throws Exception
{
String result=null;
try{
       //请求服务器接口(将数据推送给服务器接口)
String address = SystemGlobals.getValue("addressCustomerService");
URL url = null;
HttpURLConnection urlConn = null;
url = new URL(address);
urlConn = (HttpURLConnection) url.openConnection();
urlConn.setRequestMethod("POST");
urlConn.setDoOutput(true);
OutputStream out = urlConn.getOutputStream();
//Post请求参数
reqXml=URLEncoder.encode(reqXml,"utf-8");
String param="msg="+reqXml;
out.write(param.getBytes("utf-8"));
out.flush();
out.close();
       
       //接受服务器返回的数据结果
StringBuffer str = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"utf-8"));
String inputLine = null;
while ( (inputLine = in.readLine()) != null){
str.append(inputLine);
}
in.close();
result=parseSingleStr(str.toString()); }catch(Exception e){
OttExecutionContext.error(e, "消息转发异常!");
} if(result!=null&&HTTP_SUCCESS.equals(result)){
OttExecutionContext.info("消息转发成功!result:"+result);
}else{
OttExecutionContext.info("消息转发失败!result:"+result);
} return result;
} private static final Pattern singleResPattern=Pattern.compile("(.+)\"http://tempuri.org/\">(\\S+)</(.+)");
/**
* 解析xml格式单个返回结果
* @datetime 2017-4-12
*/
public static String parseSingleStr(String resXML){
if(resXML==null){
return null;
}
String result=null;
Matcher matcher=singleResPattern.matcher(resXML);
if(matcher.matches()){
MatchResult matchResult=matcher.toMatchResult();
result=matchResult.group(2);
}
return result;
}

http请求各种数据的接受的更多相关文章

  1. 6.Struts2简单类型数据的接受

    简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为: ...

  2. Android 手机卫士--构建服务端json、请求网络数据

    本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...

  3. c# JD快速搜索工具,2015分析JD搜索报文,模拟请求搜索数据,快速定位宝贝排行位置。

    分析JD搜索报文 搜索关键字 女装 第二页,分2次加载. rt=1&stop=1&click=&psort=&page=3http://search.jd.com/Se ...

  4. Get请求携带数据量的各种限制及解决办法、Post请求说明

    1.   Get请求携带数据量的各种限制及解决办法 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 到新公司处理 ...

  5. php curl模拟post请求提交数据样例总结

    在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考.注意:curl函数在php中默认是不被支持的,假设须要使用 ...

  6. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  7. angular-使用iframe做独立页(iframe传值到angular和iframe里请求后台数据)

    这个方法使用过两次.一次是在项目中嵌入一个表达式生成器.因为用别人做好的网页变成组件很难,而且里面用了jq,与angular思想相反不能用.另一次是因为想要单独引用样式.而innerHTML使用的样式 ...

  8. react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据

    1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...

  9. 关于纯xmlhttprequest请求服务器数据

    今天我们的web技术已经相当的完善, 各种前端框架如jquery或者再深一点的工具APIcloud 的使用极大的方便了我们的开发工作. 今天我要分享一个纯javascript的方式来解决请求服务器数据 ...

随机推荐

  1. Note: EnclaveDB: A Secure Database using SGX

    EnclaveDB uses SGX security properties to secure database operations. Why The cloud database is cont ...

  2. 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使 ...

  3. Hadoop eclipse plugin

    我的eclipse是在win7上,hadoop在win7里的虚拟机里的ubuntu上,为了方便起见,想在eclipse上安装hadoop的插件,主要参考 https://my.oschina.net/ ...

  4. 洛谷P2798 爆弹虐场

    P2798 爆弹虐场 题目描述 某年某月某日,Kiana 结识了一名爆弹虐场的少年. Kiana 仗着自己多学了几年OI,所以还可以勉勉强强给这位少年 讲一些自己擅长的题.具体来说,Kiana 先给这 ...

  5. Windows日志为什么要把它转成Syslog呢?

    有的朋友会问,好好的Windows日志为什么要把它转成Syslog呢?呵呵,当Windows服务器比较少的时候,我们是不需要这样做的.但试想如果你管理着成千上百台的Windows机器,你会一台一台的登 ...

  6. Jmeter如何提取响应头部的JSESSIONID【转】

    一.测试前准备 1.测试地址: 登录:http://XXXX:8080/futureloan/mvc/api/member/login 充值:http://XXXX:8080/futureloan/m ...

  7. 阿里云服务器 linux 怎么安装php(PHPSTUDY)开发环境

    1.首先登录行云管家(https://yun.cloudbility.com/login.html) wget -c http://lamp.phpstudy.NET/phpstudy.bin //下 ...

  8. Java对日期Date类进行加减运算一二三

    转载大神 https://blog.csdn.net/hacker_lees/article/details/74351838

  9. Spring对数据库的操作

    Spring结合Hibernate                   HibernateTemplate http://www.jb51.net/article/41541.htm //////// ...

  10. excel单元格内容拆分

    这几天在整理数据,但是数据都在表格的一个单元格中,看起来很不方法,所以在网上找到excel单元格内如拆分的方法,并亲测有效 介绍2种拆分的方法 方法一: (1)在B1输入公式=right(text,[ ...