我正在尝试学习RESTfulWeb服务。我正在创建一组简单的web服务。我开始在邮局工作时被卡住了。
我想将JSON输入传递给POST方法。这是我在代码中所做的:
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/x-www-form-urlencoded", produces="text/plain")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody String createChangeRequest(MyCls mycls) {
return "YAHOOOO!!";
}
我在POM. xml中包含了Jackson。
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
<version>1.9.13</version>
</dependency>
MyCls是一个简单的类,包含一些getter和setter。
我从chrome的简单REST客户端调用上述POST服务。
URL: http://localhost:8080/MYWS/cls/create
Data: {<valid-json which corresponds to each variable in the MyCls pojo}
我看到以下答复:
415 Unsupported Media Type
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
我尝试在REST客户端的POST请求中添加标头为“应用程序/json”,但这没有帮助。
有人能告诉我我错过了什么吗?如何将输入JSON自动映射到MyCls pojo?我是否缺少任何配置?
编辑:MyCls。JAVA
public class MyCls{
private String name;
private String email;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
name= name;
}
---similar getter and setter for email, address--
}
来自chrome Simple REST客户端的json:
{"name":"abc", "email":"de@test","address":"my address"}
编辑:将我的控制器方法更改为以下内容,但仍然看到相同的错误:
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/json", produces="text/plain")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody String createChangeRequest(@RequestBody MyCls mycls) {
return "YAHOOOO!!";
}
假设您的客户端将应用程序/json作为其内容类型发送,然后将处理程序映射到
consumes="application/x-www-form-urlencoded"
我将无法处理它。实际的内容类型
与预期的不匹配。
如果您期望的是application/json
,那么应该是
consumes="application/json"
还有,宣布
public @ResponseBody String createChangeRequest(MyCls mycls) {
是(在默认环境中)等同于
public @ResponseBody String createChangeRequest(@ModelAttribute MyCls mycls) {
这意味着MyCls
对象是从请求参数创建的,而不是从JSON主体创建的。相反,你应该
public @ResponseBody String createChangeRequest(@RequestBody MyCls mycls) {
因此Spring将JSON反序列化为类型为MyCls
的对象。
我正在尝试使用circe在Akka-Http应用程序中执行我的JSON(de)序列化,而不是Spray-JSON。因此,我想使用指令和来获取请求主体的字符串表示,然后执行自己的反序列化。但是似乎太聪明了,它拒绝任何内容类型不为的东西。 我现在明白了,我误解了,它只会缩小而不会扩大解封程序将接受的内容类型范围。这就解释了为什么我的解决方案不起作用。
问题内容: 如何从CherryPy中的POST请求接收JSON? 我去过此页面,尽管它在解释API,其参数及其作用方面做得很好。我似乎无法弄清楚如何使用它们将传入的JSON解析为一个对象。 这是我到目前为止的内容: 而且,这是我的jquery调用以发布帖子 问题答案: 工作示例: 链接到的文档介绍了3.2版中的几个CherryPy工具。该工具基本上可以更严格地完成上述操作,并使用3.2中的新主体处
我试图使用回调API中的数据,该API以以下格式发送POST请求: 然而,我的API目前只在这样发送时工作: views.py: post数据中只会有一个对象,所以我正在寻找一个简单的工作,而不必重写我的序列化程序来解释一个post请求中的多个对象。
我正在尝试使用以下代码在nodejs中执行HTTPS REST请求: 请求工作正常,但未如预期。正文将不以JSON格式发送,看起来像: RequestBody“:”Value1=abc1 输出应如下所示: RequestBody“:”[\r\n {\r\n \“Value3\”: \“3\”,\r\n \“Value2\”: \“abc2\”,\r\n \“Value1\”: \“abc1\”\r
问题内容: data = { ‘ids’: [12, 3, 4, 5, 6 , …] } urllib2.urlopen("http://abc.com/api/posts/create”,urllib.urlencode(data)) 我想发送POST请求,但是其中一个字段应该是数字列表。我怎样才能做到这一点 ?(JSON?) 问题答案: 如果您的服务器期望POST请求为json,则您需要添加标
本文向大家介绍playframework Java:接受JSON请求,包括了playframework Java:接受JSON请求的使用技巧和注意事项,需要的朋友参考一下 示例