java http接口请求响应 request response
接口类:
1 package org.sunshine.dcda.epg.wechat.controller.niao;
2
3 import javax.servlet.http.HttpServletRequest;
4 import org.springframework.stereotype.Controller;
5 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RequestMethod;
7 import org.springframework.web.bind.annotation.ResponseBody;
8 import org.sunshine.dcda.basecomponent.json.JsonUtils;
9 import org.sunshine.dcda.epg.wechat.common.vo.NiaodaifuVO;
10 import org.sunshine.dcda.epg.wechat.controller.base.BaseController;
11
12 @Controller
13 public class NiaodaifuController extends BaseController {
14
15 @ResponseBody
16 @RequestMapping(value="/urineTestData", produces="text/html;charset=UTF-8", method=RequestMethod.POST)
17 public String urineTestData(HttpServletRequest request) {
18 String data = getRequestStr(request);
19 NiaodaifuVO n = JsonUtils.fromJson(data, NiaodaifuVO.class); //Json转对象
20 System.out.println("~~~~~~~~~~~~~~~~~");
21 // //接收数据
22 System.out.println("2017年12月7日 10:58:13:"+n.getCname()
23 +n.getRecord_id()+",userbind:"+n.getUserbind()
24 +",family_id:"+n.getFamily_id()+",mobile:"+n.getMobile()
25 +",---:"+n.getFamily_name()+",---:"+n.getNj_userid()
26 +",---status:"+n.getStatus()+",---:"+n.getSuggestion()
27 +",---:"+n.getCreated()+",---type:"+n.getType()
28 +",--*********data:"+n.getData());
29 System.out.println(n);
30 //Unicode转中文
31 // String chinese = convert(data);
32 System.out.println("!!!!~~~~~~~~~~~");
33
34 return "二〇一七年十二月七日 10:58:34";
35 }
36 //Unicode转中文
37 public String convert(String utfString){
38 StringBuilder sb = new StringBuilder();
39 int i = -1;
40 int pos = 0;
41
42 while((i=utfString.indexOf("\\u", pos)) != -1){
43 sb.append(utfString.substring(pos, i));
44 if(i+5 < utfString.length()){
45 pos = i+6;
46 sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16));
47 }
48 }
49
50 return sb.toString();
51 }
52
53 @RequestMapping(value="/testNiao")
54 public String test(){
55 System.out.println("@@@@@@@@2017.12.07@@@@@@@@@@");
56 return "~~~~~~~~~~~~~2017-12-07~~~~~~~~~~";
57 }
58 }
接口调用传参测试类:
package org.sunshine.dcda.epg.wechat.controller.niao; import java.io.IOException; import org.sunshine.dcda.basecomponent.http.utils.HttpUtils;
import org.sunshine.dcda.basecomponent.json.JsonUtils;
import org.sunshine.dcda.epg.wechat.common.vo.NiaodaifuVO; public class TestNiao {
public static void main(String[] args) {
NiaodaifuVO vo = new NiaodaifuVO();
vo.setCname("cnameQQQQQQQQ");
vo.setCreated(1);
System.out.println(JsonUtils.toJson(vo));
try {
System.out.println(HttpUtils.doPost("http://twx.aicares.net/urineTestData", JsonUtils.toJson(vo)));
} catch (IOException e) {
e.printStackTrace();
}
}
}
接口继承 读取流工具类:
package org.sunshine.dcda.epg.wechat.controller.base; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.MessageFormat; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.sunshine.dcda.aicare.service.model.CustomerVo;
import org.sunshine.dcda.basecomponent.string.StringUtils;
import org.sunshine.dcda.epg.wechat.common.enums.MetaCodeEnums;
import org.sunshine.dcda.epg.wechat.common.exception.ServiceException;
import org.sunshine.dcda.epg.wechat.common.utils.LocalMethodVisitUtils;
import org.sunshine.dcda.epg.wechat.common.vo.InputVO;
import org.sunshine.dcda.epg.wechat.common.vo.OutputVO;
import org.sunshine.dcda.epg.wechat.service.cache.ICustomerCacheComponent;
import org.sunshine.dcda.epg.wechat.service.cache.IPublicInfoCacheComponent;
import org.sunshine.dcda.wechat.service.model.PublicInfoVo; @Controller
public class BaseController { private final Logger logger = LoggerFactory.getLogger(BaseController.class); @Resource
private IPublicInfoCacheComponent publicInfoCacheComponent; @Resource
private ICustomerCacheComponent customerCacheComponent; public String getRequestStr(HttpServletRequest request) {
StringBuilder str = new StringBuilder();
BufferedReader bufferedReader = null;
InputStreamReader inputStreamReader = null;
try {
inputStreamReader = new InputStreamReader(request.getInputStream(), "UTF-8");
bufferedReader = new BufferedReader(inputStreamReader);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
str.append(line);
}
logger.info("读取request文件流信息:" + str);
} catch (Exception e) {
logger.error("读取request文件流信息异常:" + e.getMessage());
} finally {
if (null != bufferedReader) {
try {
bufferedReader.close();
} catch (IOException e) {
logger.error(e.getMessage());
}
}
if (null != inputStreamReader) {
try {
inputStreamReader.close();
} catch (IOException e) {
logger.error(e.getMessage());
}
}
}
return str.toString();
} public void printResponse(HttpServletResponse response, String result) {
try {
logger.info("response.getWriter().print : " + result);
response.getWriter().print(result);
} catch (IOException e) {
logger.error(e.getMessage());
}
} public void redirect500(HttpServletResponse response) {
try {
response.setContentType("text/html; charset=UTF-8");
response.sendRedirect(LocalMethodVisitUtils.getAbsoluteUrl("/500"));
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
} public void redirectPublicStop(HttpServletResponse response) {
try {
response.setContentType("text/html; charset=UTF-8");
response.sendRedirect(LocalMethodVisitUtils.getAbsoluteUrl("/publicStop"));
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
} public OutputVO checkParamRequired(InputVO inputVO, String... keys) throws ServiceException {
OutputVO outputVO = new OutputVO();
if (null == inputVO || StringUtils.isEmpty(inputVO.getCid()) || StringUtils.isEmpty(inputVO.getPa())) {
logger.error("非法访问,customerId or publicAccount is null. inputVO = {}", inputVO.toString());
throw new ServiceException(MetaCodeEnums.ERR_PARAM.getKey(), "parameter error, customerId or publicAccount is null");
} String publicAccount = inputVO.getPa();
String customerId = inputVO.getCid(); PublicInfoVo publicInfoVo = null;
try {
publicInfoVo = publicInfoCacheComponent.queryByPublicAccount(publicAccount);
} catch (Exception e) {
logger.error(e.getMessage(), e);
publicInfoVo = null;
}
if (null == publicInfoVo) {
logger.error("非法访问,publicInfoVo is not exists, publicAccount = {}", publicAccount);
throw new ServiceException(MetaCodeEnums.ERR_PARAM.getKey(), "parameter error, publicInfoVo is not exists.");
} CustomerVo customerVo = null;
try {
customerVo = customerCacheComponent.queryByCustomerId(customerId);
} catch (Exception e) {
logger.error(e.getMessage(), e);
customerVo = null;
}
if(null == customerVo) {
logger.error("非法访问,customerVo is not exists, customerId = {}", customerId);
throw new ServiceException(MetaCodeEnums.ERR_PARAM.getKey(), "parameter error, customerVo is not exists.");
} if (null != keys && keys.length > 0) {
for (String key : keys) {
if (null == inputVO.getJsonElement(key)) {
logger.error("checkRequiredParam, reqId = {}, parameter param.{} is null", key);
throw new ServiceException(MetaCodeEnums.ERR_PARAM.getKey(), MessageFormat.format(MetaCodeEnums.ERR_PARAM.getValue(), "parameter param." + key + " is null"));
}
}
}
return outputVO;
}
}
------------------------------------------------------------分割线-----------------------------------------------------------------------------
回调接收数据:HttpServletRequest request
x-www-form-urlencoded格式接收方式
/**
* 动态遍历获取所有收到的参数,此步非常关键,因为收银宝以后可能会加字段,动态获取可以兼容由于收银宝加字段而引起的签名异常
* @param request
* @return
*/
private TreeMap<String, String> getParams(HttpServletRequest request){
TreeMap<String, String> map = new TreeMap<String, String>();
Map reqMap = request.getParameterMap();
for(Object key : reqMap.keySet()){
String value = ((String[])reqMap.get(key))[0];
map.put(key.toString(),value);
}
return map;
}
//上下两种方法都OK
protected HashMap<String, String> getRequestData(HttpServletRequest request){
HashMap<String, String> notifMaps = new HashMap<>(); Map<String, String[]> parameterMap = request.getParameterMap();
Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
Iterator<Map.Entry<String, String[]>> iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry<String, String[]> next = iterator.next();
notifMaps.put(next.getKey(), next.getValue()[0]);
}
return notifMaps;
}
json格式接收方式
/**流读取http请求内容*/
public static String getHttpRequest(HttpServletRequest request) {
String body = "";
try {
ServletInputStream inputStream = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
while (true) {
String info = br.readLine();
if (info == null) {
break;
}
if (body == null || "".equals(body)) {
body = info;
} else {
body += info;
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return body;
}
java http接口请求响应 request response的更多相关文章
- 【JavaWeb】请求和响应Request&Response
请求 请求对象 关于请求 顾名思义,意思就是请求一个"对象" 请求不到的,别想了 请求,就是使用者希望从服务器端索取一些资源,向服务器发出询问.在B/S架构中,就是客户浏览器向服务 ...
- ASP.NET Core 入门(2)(WebApi接口请求日志 Request和Response)
以前 .NET Framework WebApi 记录接口访问日志,一般是通过Filter的方式进行拦截,通过重写ActionFilterAttribute的OnActionExecuting实现拦截 ...
- LoadRunner 获取接口请求响应信息
Action() { int nHttpRetCode; // 默认最大长度为256,get请求需注意缓存问题,需要根据content-length进行修改 web_set_max_html_para ...
- [转] LoadRunner 获取接口请求响应信息
Action() { int nHttpRetCode; // 默认最大长度为256,get请求需注意缓存问题,需要根据content-length进行修改 web_set_max_html_para ...
- django 获取request请求对象及response响应对象中的各种属性值
django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...
- request和response——请求响应对象
请求对象--request 获取get请求的值 一次请求,返回一个响应. 地址栏:http://127.0.0.1:8000/day3/get_request?lan=python 问号:代表请求参数 ...
- Java Web之请求和响应
Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletRe ...
- javaWeb中request请求转发和response重定向
1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的&q ...
- Java web课程学习之Request和Response
request和response l HttpServletRequest l 请求转发 l HttpServletResponse l 请求重定向 请求流程 每次请求service(),都会由容 ...
随机推荐
- 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)
title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...
- vue中使用echarts画饼状图
echarts的中文文档地址:https://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20EC ...
- 走进JavaWeb技术世界2:JSP与Servlet的曾经与现在
转载自:码农翻身 转自: 刘欣 码农翻身 1周前 我是Servlet, 由于很多框架把我深深地隐藏了起来,我变得似乎无关紧要了,很多人也选择性的把我给遗忘了. 其实,我还活得好好的呢, 只不过是从前台 ...
- Maven Web项目出现org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException错误
1. 问题描述 初学Maven,新建了一个基于Web骨架的Web项目,jar 包也导好了,作用域也设置正确了,Tomcat也正常运行了,可是就是说编译错误. 2. 问题原因 虽然我配置了Tomcat ...
- pwn学习日记Day12 《程序员的自我修养》读书笔记
目标文件里有什么 ELF各段 代码段 text 数据段 data bss段 只读数据段 rodata 注释信息段 comment 堆栈提示段 .note.GNU-stack comment 存放编译器 ...
- Appium Desktop 元素定位和脚本录制功能
Appium Desktop除了可以做Server之外还可以进行元素定位和脚本录制功能,点击放大镜按钮,进入页面设置.开始配置Desired Capabilities. 配置Desired Capab ...
- [Java]借助PrintWriter类和StringWriter类,取出异常堆栈信息放入字符串中
在程序开发中,有时我们不仅需要将异常堆栈信息打印在控制台里或是log里,可能还需要将它存在String中,再送到合适的地方,如错误页面,数据库等. 要取异常堆栈信息,具体的函数就是: /** * Ge ...
- 手把手教你实现RecyclerView的下拉刷新和上拉加载更多
手把手教你实现RecyclerView的下拉刷新和上拉加载更多 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...
- Hadoop常用命令介绍
本文主要介绍 Hadoop 常用的命令. test命令 用于检测文件或目录是否存在,判断文件或目录大小. -test -[defsz] <path> : Answer various qu ...
- MapReduce编程实例
MapReduce常见编程实例集锦. WordCount单词统计 数据去重 倒排索引 1. WordCount单词统计 (1) 输入输出 输入数据: file1.csv内容 hellod world ...