一、接受请求的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. ZOJ 3939 The Lucky Week (暴力找规律)

    题意:给定一个幸运日,求第 k 个幸运日是多少. 析:由于闰年,每400肯定会循环一次,所以我们就可以先找出每400年会有多少幸运日,是2058个,然后再暴力. 代码如下: #pragma comme ...

  2. js或jQuery中 邮箱跳转的问题,跳转到指定邮箱(通过layui的ifram实现)

    对刚做的东西记个笔记 如果遇到同样问题解决起来又问题的欢迎留言 var emailtext = $("#TextBoxEmail").val();//获得要截取的值 var arr ...

  3. pandas中df.ix, df.loc, df.iloc 的使用场景以及区别

    pandas中df.ix, df.loc, df.iloc 的使用场景以及区别: https://stackoverflow.com/questions/31593201/pandas-iloc-vs ...

  4. 实现one hot encode独热编码的两种方法

    实现one hot encode的两种方法: https://stackoverflow.com/questions/37292872/how-can-i-one-hot-encode-in-pyth ...

  5. 关于.net中的身份认证(AuthorizeAttribute)的问题

    引言 新公司当初面试的时候问了我很多用户验证的问题,这里就把我的对于验证的想法写一下,希望可以有一个系统的学习记录. 一.如何验证 B/S结构的请求是http请求,个人理解的http请求有两个特点:1 ...

  6. [WIP]Vue CLI

    更新: 2019/05/30 文档: https://cli.vuejs.org/zh/  安装 npm install -g @vue/cli 确认是否成功安装 vue --version 基础   ...

  7. poj 2068 Nim

    Nim POJ - 2068 题目大意:多组数据,两人轮流操作,n轮一循环,给出总石子数和这n轮每次两人能取的石子上限(下限为1).取到最后一颗者输. /* f[i][j]表示在第i轮中一共有j个石子 ...

  8. 洛谷P3043 [USACO12JAN]牛联盟Bovine Alliance

    P3043 [USACO12JAN]牛联盟Bovine Alliance 题目描述 Bessie and her bovine pals from nearby farms have finally ...

  9. sourcetree基本使用

    非常有用的使用sourcetree开发的步骤文档 https://www.cnblogs.com/fps2tao/p/7825742.html 1) master,最终发布版本,整个项目中有且只有一个 ...

  10. SaltStack自动化安装配置haproxy

    准备环境node1:192.168.217.149 (saltstack master)node2:192.168.217.150(saltstack minion)下载haproxy1.6.2.ta ...