接口类:

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 getParams(HttpServletRequest request){

TreeMap map = new TreeMap();

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 getRequestData(HttpServletRequest request){

HashMap notifMaps = new HashMap<>();

Map parameterMap = request.getParameterMap();

Set> entries = parameterMap.entrySet();

Iterator> iterator = entries.iterator();

while (iterator.hasNext()) {

Map.Entry 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;

}

ASP&period;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 ...

&lbrack;转&rsqb; LoadRunner 获取接口请求响应信息

Action() { int nHttpRetCode; // 默认最大长度为256,get请求需注意缓存问题,需要根据content-length进行修改 web_set_max_html_para ...

django 获取request请求对象及response响应对象中的各种属性值

django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...

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(),都会由容 ...

DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

随机推荐

Java 多线程编程

1.synchronized/wait/notify package javamultithread; import java.util.logging.Level; import java.util ...

【收藏】Java多线程&sol;并发编程大合集

(一).[Java并发编程]并发编程大合集-兰亭风雨    [Java并发编程]实现多线程的两种方法    [Java并发编程]线程的中断    [Java并发编程]正确挂起.恢复.终止线程    [ ...

&lbrack;bzoj2124&rsqb;等差子序列&lpar;hash&plus;树状数组&rpar;

我又来更博啦     2124: 等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 941  Solved: 348[Submit][Statu ...

ORACLE-RAC-11G-R2&lowbar;INSTALL

ORACLE 11.2.0.3 RAC INSTALL                                                                       20 ...

ASP&period;NET MVC DefaultModelBinder

转载自 Leo‘s Blog 看到很多ASP.NET MVC项目还在从request.querystring或者formContext里面获取数据,这实在是非常落后的做法.也有的项目建了大量的自定义的 ...

【转】linux服务器性能查看

转载自https://blog.csdn.net/achenyuan/article/details/78974729 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuin ...

Activiti For Eclipse&lpar;Mars)插件配置

Activiti BPMN 2.0 designer : http://www.activiti.org/designer/update/

BZOJ3626 LNOI2014LCA(树链剖分&plus;主席树)

开店简化版. #include #include #include #include ...

qt 内置图标使用

QToolButton *button = new QToolButton(this); button->resize(100,30); button->setToolButtonStyl ...

&period;Net Core WebApi控制器接收原始请求正文内容

主要目标 在Asp.net Core控制器中,通过自定义格式化程序来映射自定义处理控制器中的“未知”内容. 简单案例 为了演示这个问题,我们用VS2017创建一个默认的Asp.net Core Web ...

java 请求响应_java http接口请求响应 request response相关推荐

  1. Java开发中使用模拟接口moco响应中文时乱码

    场景 在开发中需要依赖一些接口,比如需要请求一个返回Json数据的接口,但是返回Json数据的接口要么是没搭建,要么是交互比较复杂. 此时,就可以使用moco来模拟接口返回接口数据,以便开发和测试工作 ...

  2. java http参数传递_Java在HTTP请求中传递数组参数的方法

    有个功能需要我请求别人提供的接口,该接口的参数是一个多维数组,大致类似这样:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  3. java map 教程_Java Map接口

    Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...

  4. java 通讯开发_java之接口开发-初级篇-socket通信

    socket通信实现util包类实现 public class SocketThread extends Thread { public void run() { while (true) { // ...

  5. java web 保护_java web项目请求控制及简单漏洞防范

    背景:当时项目没用什么框架,过滤器,请求限制等都需要自己手写. 1.请求加时间戳 在后台过滤器中可以加判断,如果请求时间戳与服务器时间相差太大,可以返回异常,具体情况可以具体使用. 请求中加时间戳的示 ...

  6. java http 流_java 模拟http请求,通过流(stream)的方式,发送json数据和文件

    发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String ...

  7. java httpclient 包_java实现http请求之HttpClient

    public static String doGet(String url, String charset) { //1.生成HttpClient对象并设置参数 HttpClient httpClie ...

  8. java http请求实现_JAVA实现HTTP请求方式

    get请求 public String sendGet(String httpurl) throws IOException { URL url = new URL(httpurl); HttpURL ...

  9. java中断响应时间_Java多线程 sleep方法响应中断 sleep面试问题(与wait/notify的

    Java多线程 sleep方法响应中断 sleep面试问题(与wait/notify的 Java多线程 sleep方法响应中断 & sleep面试问题(与wait/notify的比较) 文章目 ...

最新文章

  1. 云栖科技评论 | 传统产业的数字化转型 破除“肌肉记忆” 拥抱变化与未知
  2. 浅析优化网站导航设计的几种常用方法
  3. 测试DeltaCopy
  4. 开源是互联网发展的核动力
  5. 抢坐公司网盘首位,谁才是最大蛋糕受益者?
  6. CentOS 初体验十一:firewall防火墙的命令使用
  7. 【CKEditor】下载历史版本4.8.x
  8. MapReduce程序的优化
  9. 才26岁!94年小姐姐,已任985名校副教授!
  10. 动态规划之正则表达式匹配字符串
  11. 我理解的 Java 泛型
  12. 将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架
  13. Zeppelin介绍
  14. iOS中文字体斜体效果
  15. 【NOI2018】你的名字(后缀自动机,线段树合并)
  16. Linux共享后无权限访问,Samba服务无权限访问
  17. 华为员工待遇全面揭秘
  18. quot;多看nbsp;fornbsp;kindle3”升级包下载
  19. 利用摄像头实现人员活动检测(python+openCV)
  20. 可恶的动态代理!!!!我要消灭你

热门文章

  1. linux虚拟机如何加网卡,linux虚拟机添加新的网卡
  2. SqlDataAdapter隐式打开关闭connection
  3. 程序员的十个糟糕的行为
  4. bash-高级编程--位置变量
  5. 网络分层模型OSI和TCP/IP四层模型
  6. 输出200-299之间的所有素数
  7. SpringBoot解耦的扩展机制 Spring Factories介绍及使用
  8. 日常生活 -- STM32开发前言
  9. 搭架SSH服务器学习笔记
  10. Mysql:Sql的执行顺序