Content-Type为application/json后台如何接收前台数据

Content-Type为application/json时,假设前台传输的数据为data: {name:'wyc',age:12}

第一种情况在springmvc框架下

处理方法为前台post请求,传输数据需要从json对象转成json字符串data: JSON.stringify({name:'wyc',age:12})

后台接收函数上添加@requestbody注解,并定义一个类包含name和age属性:

public class user {
    String userName;
    String password;
    省略get和set方法

}

后台接收函数为

public 方法返回类型 方法名(@RequestBody user user)

第二种情况在servlet下

处理方法为前台传输数据依旧需要从json对象转成json字符串data: JSON.stringify({name:'wyc',age:12})

后台定义一个类包含name和age属性:

public class user {
    String userName;
    String password;
    省略get和set方法

}

后台接收函数为

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{ 
BufferedReader br = request.getReader();
String str, wholeStr = "";
while((str = br.readLine()) != null){
         wholeStr += str;
}
System.out.println(wholeStr);
user user= (user)JSONObject.toBean(JSONObject.fromObject(wholeStr),user.class);
System.out.println(user.getserName());
}



发布了8 篇原创文章 · 获赞 5 · 访问量 1万+
展开阅读全文

在java代码中创建的 application/json 类型的请求 和 postman中的 application/json类型的请求有什么区别?

12-23

## 问题描述 问题是这样的,有一个controller接口,我使用java代码可以调通这个接口 但是用postman调用就不可以。可是我设置的参数都是一样的。下面是详细代码。 ## 代码 * controller里的接口: ```@GetMapping("/user") public String query(@RequestParam String name, HttpServletRequest request){ System.out.println(name); return "hello"; } ``` * 使用java代码调用接口: ``` @Test public void query() throws Exception { String result = mockMvc.perform( get("/user") .param("name", "sen") .contentType("application/json")) .andExpect(status().isOk()) .andReturn().getResponse().getContentAsString(); System.out.println(result); } ``` 根据我的开发经验,如果请求头里的contentType为**"application/json"**的话,后台controller参数要加**@RequestBody**注解,接口才能调通。但是,上面的java代码,controller里面没有@RequestBody这个注解,同样调通了接口。而我用postman调用的时候却失败了。 * postman调用接口 ![图片说明](https://img-ask.csdn.net/upload/201812/23/1545575792_360807.png) 请求报文是这样的: ![图片说明](https://img-ask.csdn.net/upload/201812/23/1545575875_991130.png) 但postman的这种方式调用后台接口直接失败了。然后我再postman中,使用form-data方式是可以调通接口的。 * 问题重申 因此我就想问下,为啥java代码里面创建的 application/json 类型的请求为啥可以而postman中的 application/json类型请求为啥不行。。 * 答案 卧槽,刚把问题写完我自己就想通原因了。但是打了这么多字,就写完吧。java代码里面的参数是拼接到url路径里的。所以可以调用。因此postman里面可以这样调用: ![图片说明](https://img-ask.csdn.net/upload/201812/23/1545576461_176225.png) 这样也就通了。困扰我很久的问题,想通了。因此java代码里面,无论接口参数是键值对还是json数据,content-type设置成application/json就没错了。 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览