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的方式来解决请求服务器数据 ...
随机推荐
- 8.bwapp亲测xxe漏洞
这几天在学习XXE漏洞,这里用靶机bwapp来练习一下这个漏洞,重在学习 xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤, 从而可以造成命令执行,目录遍历 ...
- 6.JBoss5.x6.x 反序列化漏洞(CVE-2017-12149)复现
2017 年 9 月 14 日,国家信息安全漏洞共享平台( CNVD )收录了 JBOSS Application Server 反序列化命令执行漏洞( CNVD-2017-33724,对应 CVE- ...
- hdu1073
#include<iostream> using namespace std; #define N 5050 char a[N],b[N],tmp[N]; void Read(char p ...
- uWSGI + Nginx + Django 部署
1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server Gateway ) 作为 Web 服务器,一般仅用来作为测试使用,实际生产环境而是使用 uWSGI 和 ...
- cinder服务状态up/down的源码梳理
基于ocata版本的,源码梳理 1)用户输入cinder service-list命令行,查看cinder服务的状态时,cinder的入口函数为cinder/api/contrib/services. ...
- Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...
- C#报算术运算导致溢出的错误
如果是在fill datatable时报这个错,是因为所查询的数据中有在数据库中为NUMBER类型的字段,这种类型C#中不能识别,需TO_CHAR转换成字符型,就不会再报这个错了. e.g. SELE ...
- [Xcode 实际操作]四、常用控件-(16)为MKMapView指定地理坐标
目录:[Swift]Xcode实际操作 本文将演示如何自定义地图视图的的地理坐标 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先 ...
- Linux 常用命令一览
本篇博文讲述系统内核.Bash解释器的关系与作用,如何正确的执行Linux命令以及常见排错方法. 经验丰富的运维人员可以恰当的组合命令与参数,使Linux字符命令更加的灵活且相对减少消耗系统资源. 强 ...
- C# Stack堆栈的使用方法
堆栈(Stack)代表了一个后进先出的对象集合.当您需要对各项进行后进先出的访问时,则使用堆栈.当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素. Stack 类的方法和属性 ...