java 请求响应_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轉(zhuǎn)對象
20 System.out.println("~~~~~~~~~~~~~~~~~");
21 // //接收數(shù)據(jù)
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轉(zhuǎn)中文
31 // String chinese = convert(data);
32 System.out.println("!!!!~~~~~~~~~~~");
33
34 return "二〇一七年十二月七日 10:58:34";
35 }
36 //Unicode轉(zhuǎn)中文
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 }
接口調(diào)用傳參測試類:
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;
}
}
------------------------------------------------------------分割線-----------------------------------------------------------------------------
回調(diào)接收數(shù)據(jù):HttpServletRequest request
x-www-form-urlencoded格式接收方式
/**
* 動態(tài)遍歷獲取所有收到的參數(shù),此步非常關(guān)鍵,因為收銀寶以后可能會加字段,動態(tài)獲取可以兼容由于收銀寶加字段而引起的簽名異常
* @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請求內(nèi)容*/
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.NET Core 入門(2)(WebApi接口請求日志 Request和Response)
以前 .NET Framework?WebApi 記錄接口訪問日志,一般是通過Filter的方式進行攔截,通過重寫ActionFilterAttribute的OnActionExecuting實現(xiàn)攔截 ...
LoadRunner 獲取接口請求響應(yīng)信息
Action() { int nHttpRetCode; // 默認最大長度為256,get請求需注意緩存問題,需要根據(jù)content-length進行修改 web_set_max_html_para ...
[轉(zhuǎn)] LoadRunner 獲取接口請求響應(yīng)信息
Action() { int nHttpRetCode; // 默認最大長度為256,get請求需注意緩存問題,需要根據(jù)content-length進行修改 web_set_max_html_para ...
django 獲取request請求對象及response響應(yīng)對象中的各種屬性值
django request對象和HttpResponse對象 HttpRequest對象(除非特殊說明,所有屬性都是只讀,session屬性是個例外) HttpRequest.scheme 請求方案 ...
Java Web之請求和響應(yīng)
Servlet最主要作用就是處理客戶端請求并作出回應(yīng),為此,針對每次請求,Web容器在調(diào)用service()之前都會創(chuàng)建兩個對象,分別是HttpServletRequest和HttpServletRe ...
javaWeb中request請求轉(zhuǎn)發(fā)和response重定向
1.訪問資源 運用forward方法只能重定向到同一個Web應(yīng)用程序中的一個資源. 而sendRedirect方法可以讓你重定向到任何URL. ?2.request.get Forward代碼中的&q ...
Java web課程學(xué)習(xí)之Request和Response
request和response l?HttpServletRequest l?請求轉(zhuǎn)發(fā) l?HttpServletResponse l?請求重定向 ? 請求流程 每次請求service(),都會由容 ...
DRF框架(一)——restful接口規(guī)范、基于規(guī)范下使用原生django接口查詢和增加、原生Django CBV請求生命周期源碼分析、drf請求生命周期源碼分析、請求模塊request、渲染模塊render
DRF框架? ? 全稱:django-rest framework 知識點 1.接口:什么是接口.restful接口規(guī)范 2.CBV生命周期源碼 - 基于restful規(guī)范下的CBV接口 3.請求組件 ...
第三篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之請求消息,響應(yīng)消息以及事件消息類的封裝
微信服務(wù)器和第三方服務(wù)器之間究竟是通過什么方式進行對話的? 下面,我們先看下圖: 其實我們可以簡單的理解: (1)首先,用戶向微信服務(wù)器發(fā)送消息: (2)微信服務(wù)器接收到用戶的消息處理之后,通過開發(fā)者 ...
隨機推薦
Java 多線程編程
1.synchronized/wait/notify package javamultithread; import java.util.logging.Level; import java.util ...
【收藏】Java多線程/并發(fā)編程大合集
(一).[Java并發(fā)編程]并發(fā)編程大合集-蘭亭風(fēng)雨 ? ?[Java并發(fā)編程]實現(xiàn)多線程的兩種方法 ???[Java并發(fā)編程]線程的中斷 ???[Java并發(fā)編程]正確掛起.恢復(fù).終止線程 ???[ ...
[bzoj2124]等差子序列(hash+樹狀數(shù)組)
我又來更博啦 ? ? 2124: 等差子序列 Time Limit:?3 Sec??Memory Limit:?259 MBSubmit:?941??Solved:?348[Submit][Statu ...
ORACLE-RAC-11G-R2_INSTALL
ORACLE 11.2.0.3 RAC INSTALL???????????????????????????????????????????????????????????????????????20 ...
ASP.NET MVC DefaultModelBinder
轉(zhuǎn)載自 Leo‘s Blog 看到很多ASP.NET MVC項目還在從request.querystring或者formContext里面獲取數(shù)據(jù),這實在是非常落后的做法.也有的項目建了大量的自定義的 ...
【轉(zhuǎn)】linux服務(wù)器性能查看
轉(zhuǎn)載自https://blog.csdn.net/achenyuan/article/details/78974729 1.1 cpu性能查看 1.查看物理cpu個數(shù): cat /proc/cpuin ...
Activiti For Eclipse(Mars)插件配置
Activiti BPMN 2.0 designer :?http://www.activiti.org/designer/update/
BZOJ3626 LNOI2014LCA(樹鏈剖分+主席樹)
開店簡化版. #include #include #include #include ...
qt 內(nèi)置圖標使用
QToolButton *button = new QToolButton(this); button->resize(100,30); button->setToolButtonStyl ...
.Net Core WebApi控制器接收原始請求正文內(nèi)容
主要目標 在Asp.net Core控制器中,通過自定義格式化程序來映射自定義處理控制器中的“未知”內(nèi)容. 簡單案例 為了演示這個問題,我們用VS2017創(chuàng)建一個默認的Asp.net Core Web ...
總結(jié)
以上是生活随笔為你收集整理的java 请求响应_java http接口请求响应 request response的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 有序set_Java 从Set
- 下一篇: java final修饰的类_java