![](/img/trans.png)
[英]Getting Error 405 for post request to REST api using Java Jersey api
[英]Getting 405 “Method Not Allowed” error using POST with @FormParam (Java web service with Jersey REST)
我知道将某些内容传递给既不是String也不是简单Type的REST Server(资源)并不容易。
但是对于一个简单的订购过程,我需要从客户端向服务器发送商品列表(应订购)。
我已经尝试过使用“ QueryParam”,将我的对象(将列表包装到DTO中)转换为JSON-String并将其传递。 没用 (但是对于不需要将对象传递到服务器的其他方法,我的服务即使是POST方法也可以正常工作。)
然后,我发现了@FormParam,它在理论上可以传输每种对象。 (这就是我读到的,实际上是真的吗?)
因此,我尝试使用一种非常简单的测试方法将字符串列表传递给服务,服务器端应返回该列表的元素数量。
那是我的代码:
在服务器端(资源)上:
@Path("bestellung")
public class BestellungResource {
@Path("test")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(XML)
public Integer test(
@FormParam("list") List<String> list){
return list.size();
}
}
在客户端(在会话Bean中):
public Integer test() {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
Form form = new Form();
form.add("list", list);
return service
.path("bestellung")
.path("test")
.type(MediaType.APPLICATION_FORM_URLENCODED)
.post(Integer.class, form);
}
这样构建服务的地方:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
service = client.resource(UriBuilder.fromUri("<service url>").build());
从我的GUI或直接通过EJB Explorer调用此客户端方法总是会出现405错误。
哪里出问题了? 我是否错过了POST,MIME类型或表单?
顺便说一句,即使使用简单的表单参数(例如String或int),它也不起作用,并且还会引发405错误。
谢谢你的帮助!
亚娜
好的。
由于我发现了405错误的原因,因此我将关闭此问题。 但是,我将为新发现的误读400错误打开一个新的错误。 我在上面的评论中解释了“解决方案”:
我将服务从较旧的服务器(POST根本不起作用,并且始终抛出405)移到了较新的服务器,并且没有在客户端中更改服务URL! @ _ @(因此新客户端仍尝试访问旧服务器)
但是现在,我可以发送字符串列表,但是不能发送自己的类对象(实体或DTO)。 现在,我收到一个HTTP 400错误“错误请求” 。 :-(但是,我没有做任何其他更改。是否可以发送非标准类型?
(->我将在一个新问题中提出。)
对不起,这个愚蠢的错误。
亚娜
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.