![](/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.