urlencoded json @RequestBody @RequestParam 之间的联系

3 篇文章 0 订阅

基于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",

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值