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的方式来解决请求服务器数据 ...
随机推荐
- C# -- 继承规则
例子1--C#继承的常见问题: using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- 【Spring-任务调度】
Spring-任务调度: spring内部有一个task是Spring自带的一个设定时间自动任务调度task使用的时候很方便,但是他能做的东西不如quartz那么的多!可以使用注解和配置两种方式,配置 ...
- 网络请求返回HTTP状态码(404,400,500)
HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...
- 牛客网小白月赛6C(DFS,思维)
#include<bits/stdc++.h>using namespace std;vector<int>tree[1000010];int sum=0;int dfs(in ...
- validate验证注册表单
点击预览; <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- 《权限系列shiro+cas》---封装公共验证模块
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 我们现在可以将任意属性传递给每个顶点的顶点着色器使用.但是 ...
- EOS 智能合约编写(一)
本文编写了一个简单的EOS智能合约,实现用户管理和资产管理,包括存钱,取钱,转帐的功能,旨在学习如何编写自己的EOS合约功能. 系统:Ubuntu EOS版本:v1.1.1 一.智能合约代码 ...
- 洛谷P1967 货车运输
题目描述 \(A\)国有\(n\)座城市,编号从\(1\)到\(n\),城市之间有\(m\)条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有\(q\)辆货车在运输货物, 司机们想知道每辆车在 ...
- 原生DOM操作方法小结
1.0 DOM结构 父节点 兄弟节点 当前节点 属性节点 子节点 兄弟节点 一般任意一个节点我们都会从父节点,子节点,以及兄弟节点的角度去考察.节点一般我们只需关注元素节点,属性节点及文本节点即可 ...
- :input获得焦点时被弹出键盘挡住解决办法
这个是移动端非常常见的bug了,这里说下综合的解决办法,因为有时候你的办法就是会失效.. 上代码 /*input框调起输入法盖住输入问题*/$('input[type="text" ...