基于java 版本讲解。
很多同学用postman 测试
json请求方式
x-www-form-urlencoded 请求方式
这两种请求方式,java 的服务器springMVC接收的写法是不一样的。
1.基于x-www-form-urlencoded 的方式
定义了一个Map 接收,但是要添加一个注解@RequestParam注解
@RequestMapping("/doorbell")
@Controller
public class DoorbellController {
@RequestMapping("/deviceList")
@ResponseBody
public Object devicelist(@RequestParam Map map){
// System.out.println(request.getParameter("content"));
String param= (String)map.get("content");
System.out.println(param);
Map mapRes = new HashMap();
mapRes.put("xxx","yyyy");
return mapRes;
}
}
或者是用HttpserveltRequest
@RequestMapping("/doorbell")
@Controller
public class DoorbellController {
@RequestMapping("/deviceList")
@ResponseBody
public Object devicelist(HttpServletRequest request){
System.out.println(request.getParameter("content"));
//String param= (String)map.get("content");
// System.out.println(param);
Map mapRes = new HashMap();
mapRes.put("xxx","yyyy");
return mapRes;
}
}
响应的结果 @ResponseBody 表示返回的是json 字符串。
默认的一般的httpclient 一般的编码方式是: x-www-form-urlencoded。java 和node.js 我都测试过。
这里基于postman测试的方式,我不再讲述了,同学们可以去自己试试,这里本人基于node.js写的客户端请求测试。
var http=require("http");
var querystring=require("querystring");
var postData=querystring.stringify({
"content":"just a test",
});
var options={
hostname:"localhost",
port:16888,
path:"/doorbell/deviceList",
method:"POST",
headers:{
"Accept":"application/json, text/javascript, */*; q=0.01",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.8",
"Connection":"keep-alive",
"Content-Length":postData.length,
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Cookie":"imooc_uuid=6cc9e8d5-424a-4861-9f7d-9cbcfbe4c6ae; imooc_isnew_ct=1460873157; loginstate=1; apsid=IzZDJiMGU0OTMyNTE0ZGFhZDAzZDNhZTAyZDg2ZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjkyOTk0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNmNmFhMmVhMTYwNzRmMjczNjdmZWUyNDg1ZTZkMGM1BwhXVwcIV1c%3DMD; PHPSESSID=thh4bfrl1t7qre9tr56m32tbv0; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1467635471,1467653719,1467654690,1467654957; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1467655022; imooc_isnew=2; cvde=577a9e57ce250-34",
"Host":"localhost",
"Origin":"http://www.imooc.com",
"Referer":"http://www.imooc.com/video/8837",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2763.0 Safari/537.36",
"X-Requested-With":"XMLHttpRequest",
}
}
var req=http.request(options,function(res){
//监听响应的data事件
res.on("data",function(chunk){
var resData= JSON.parse(chunk)
console.log(resData);
});
//监听响应的end事件
res.on("end",function(){
console.log("### end ##");
});
//这里先执行顺序走下去
console.log(res.statusCode);
});
req.on("error",function(err){
console.log(err.message);
})
req.write(postData);
req.end();
这里是urlencoder编码方式,java 服务器接收数据是可以的。
2.json编码请求方式
@RequestMapping("/doorbell")
@Controller
public class DoorbellController {
@RequestMapping("/deviceList")
@ResponseBody
public Object devicelist(@RequestBody String param){
System.out.println(param);
Map mapRes = new HashMap();
mapRes.put("xxx","yyyy");
return mapRes;
}
}
将node代码片段:改为 json请求方式,"Content-Type":"application/json; charset=UTF-8",