日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 请求响应_java http接口请求响应 request response

發(fā)布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 请求响应_java http接口请求响应 request response 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接口類:

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

&lbrack;轉(zhuǎn)&rsqb; 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多線程&sol;并發(fā)編程大合集

(一).[Java并發(fā)編程]并發(fā)編程大合集-蘭亭風(fēng)雨 ? ?[Java并發(fā)編程]實現(xiàn)多線程的兩種方法 ???[Java并發(fā)編程]線程的中斷 ???[Java并發(fā)編程]正確掛起.恢復(fù).終止線程 ???[ ...

&lbrack;bzoj2124&rsqb;等差子序列&lpar;hash&plus;樹狀數(shù)組&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

轉(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&lpar;Mars)插件配置

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

BZOJ3626 LNOI2014LCA(樹鏈剖分&plus;主席樹)

開店簡化版. #include #include #include #include ...

qt 內(nèi)置圖標使用

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

&period;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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。