http请求各种数据的接受
一、接受请求的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请求各种数据的接受的更多相关文章
- 6.Struts2简单类型数据的接受
简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为: ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- c# JD快速搜索工具,2015分析JD搜索报文,模拟请求搜索数据,快速定位宝贝排行位置。
分析JD搜索报文 搜索关键字 女装 第二页,分2次加载. rt=1&stop=1&click=&psort=&page=3http://search.jd.com/Se ...
- Get请求携带数据量的各种限制及解决办法、Post请求说明
1. Get请求携带数据量的各种限制及解决办法 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 到新公司处理 ...
- php curl模拟post请求提交数据样例总结
在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考.注意:curl函数在php中默认是不被支持的,假设须要使用 ...
- Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查
一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...
- angular-使用iframe做独立页(iframe传值到angular和iframe里请求后台数据)
这个方法使用过两次.一次是在项目中嵌入一个表达式生成器.因为用别人做好的网页变成组件很难,而且里面用了jq,与angular思想相反不能用.另一次是因为想要单独引用样式.而innerHTML使用的样式 ...
- react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据
1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...
- 关于纯xmlhttprequest请求服务器数据
今天我们的web技术已经相当的完善, 各种前端框架如jquery或者再深一点的工具APIcloud 的使用极大的方便了我们的开发工作. 今天我要分享一个纯javascript的方式来解决请求服务器数据 ...
随机推荐
- 【转】Subversion快速入门教程-动画演示
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配 ...
- Linux 最小系统挂载U盘(SD、TF卡)并执行程序
一.在Ubuntu下编译C文件 使用指令"arm-none-linux-gnueabi-gcc-4.4.1 -o HelloWorld HelloWorld.c -static"编 ...
- jquery.pagination.js数据无刷新真分页
定义一个全局的分页加载变量,并设置为true: var __isReSearch=true; 定义分页的一些数据: var __PageSize = 10; var __SearchCondition ...
- java二分法查找实现代码
package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...
- UML——前两章
前言 软件开发过程中,在生命周期中,我们大都知道要写文档,但是针对这种团队集体完成的事情,如果中间出现了人员流动问题,这时侯有文档仅仅是不够的.为了让大多数开发人员和用户能直观的了解软件开发的进度和流 ...
- 移动web 的viewport设置注意事项的详细解释 六一快乐=-_-_
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JSP,EL和JSTL
JSP,EL和JSTL 内容待添加...
- 关于苹果出现NaN的情况----由Date格式解析方式不同引起的Bug
源于一个工作中遇到的问题:IOS 上时间显示为 NaN,而安卓上时间显示正常. 问题的根源在于 安卓 和 苹果 对于 JS Date 对象的不同解析. 安卓: new Date("2018- ...
- Luogu P3223 [HNOI2012]排队 组合
本来做了一道 P4901 排队 后来发现自己做错题了...到也都是数学qwq 这题最恶心的就是两只(雾)老师. 那我们分类讨论: 1.两个老师之间是男生: $ A(n,n)*A(n+1,2)*A(n ...
- Oracle存储过程实例分析总结(代码)
1.存储过程结构 1.1 第一个存储过程 ? 1 2 3 4 5 6 7 8 9 10 11 12 CREATE OR REPLACE PROCEDURE proc1 ( para1 varc ...