簡體   English   中英

如何對 REST 網絡服務執行 POST 請求?

[英]How to perform POST requests to a REST webservice?

我有一個 RESTful web 服務,我在其中編寫了一個接收POST請求的方法。

我正在嘗試通過 URL http://localhost:8091/prjctname/post訪問該方法。

但它拋出以下錯誤:

HTTP 狀態 405 - 不支持請求方法“GET”
類型:狀態報告
消息:不支持請求方法“GET”
描述:請求的資源不允許指定的 HTTP 方法

下面是代碼片段。

@RequestMapping(value = "/post", method = RequestMethod.POST)
@Produces("application/json")
@ResponseBody 
public String createUser(@RequestBody PCDBean bean, HttpServletRequest request) {

    String username = null;
    String password = null;
    System.out.println("inside post method");

    String result = service.getCustomer(username, password);
    if(result != null) {
        return username + password;
    } else {
        return "failure";
    }
}

解釋 405 錯誤

您正在向僅支持POST請求的端點執行GET請求。 在這種情況下,預期結果是405錯誤:

6.5.5. 405 方法不允許

405 (Method Not Allowed) 狀態碼表示在請求行中接收到的方法被源服務器知道但不被目標資源支持。 [...]

選擇正確的工具

我猜您正在嘗試使用瀏覽器地址欄訪問端點。 但是,在瀏覽器地址欄中鍵入資源 URL 時,您正在執行GET請求。 這是瀏覽器的默認行為。 處理它

因此,瀏覽器地址欄不會給你太多的靈活性來測試 REST API,一旦你只能從它執行GET請求。

要測試 REST API,您應該使用正確的工具 它們將使您能夠使用所有 HTTP 方法(包括POST )執行請求、設置請求標頭和瀏覽器地址欄中不可用的其他功能。

簡單列舉幾個:

在我的案例中,真正的問題是我的文本並不完全符合服務器中的預期。 對象有拼寫錯誤。 應該正好是 "{\\n"+"\\"jobName\\":\\"MOVE_TO_PICK_POSITION\\"\\n"+"}"; 我正在使用其他東西。

405 錯誤消息讓我浪費了很多時間,因為它讓我認為我的 POST 請求有問題。

希望這可以幫助。

你需要讓瀏覽器接受一個 post 請求,像這樣:

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <form action="login" method="post"> name: <input type="text" name="name"> <br> password: <input type="password" name="password"> <br> <input type="submit" value="submit"> </form> </body> </html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM