2013-11-24 122 views
1

我已經設置了一個spring RESTful Web服務,用於接收用戶的用戶名和密碼。一直在Spring IO對Spring REST Web服務的POST請求失敗,並顯示HTTP狀態415

我的服務被設置爲接受用戶名和密碼教程下面,如下圖所示:

@Controller 
    @RequestMapping("/users") 
    public class UserCommandController { 
     private static Logger log = LoggerFactory.getLogger(UserCommandController.class); 
     @RequestMapping(method = RequestMethod.POST) 
     public ResponseEntity createUser(@RequestBody UserDetail userDetail, UriComponentsBuilder builder) { 
      User newUser = new User(); 
      newUser.setEmail(userDetail.getEmail()); 
      newUser.setPassword(userDetail.getPassword()); 
      newUser.setUserName(userDetail.getUsername()); 
      try { 
       UserFactory.getInstance().saveNewUser(newUser); 
      } catch(UserException ue) { 
       log.error("Saving user failed. Exception: "+ue.getMessage()); 
      } 
      return new ResponseEntity(HttpStatus.OK); 
     } 
    } 

我發送POST參數,以服務爲通過谷歌瀏覽器插件,郵遞員,但我測試得到「HTTP:因爲請求的實體是不被請求方式所請求的資源支持的格式415..The服務器拒絕這個請求。」

enter image description here

有沒有人有一個想法我做錯了什麼?

+0

tsure:你能解決它嗎?我看到了同樣的問題。 –

+0

[Spring MVC 3.1 REST服務post方法返回415]的可能重複(http://stackoverflow.com/questions/14222681/spring-mvc-3-1-rest-services-post-method-return-415) – Raedwald

回答

0

HTTP 415響應代碼表示服務器期望的數據以不同的內容類型發佈。看來你只需發佈一個包含用戶名,密碼和電子郵件的表單作爲參數。這將導致application/x-www-form-urlencoded的內容類型。

嘗試發佈內容類型的應用程序/ xml或application/json。在您的文章正文中,您需要將數據置於相應的格式中。例如,如果您使用的application.xml,XML主體應該是這個樣子:

<userDetail> 
    <userName>xxx</userName> 
    <password>xxx</password> 
    <email>xxx</email> 
</userDatail> 

課程的確切格式(即元素名稱)依賴於XML綁定。事實上,無論預期的格式是XML還是JSON或其他,也可能是服務器配置。

發佈此類型的請求不容易用瀏覽器完成。你將需要一些其他的HTTP客戶端。像SOAP-UI這樣的工具可能是一個不錯的選擇。

+0

通過POSTMAN嘗試了JSON,這是一個REST客戶端 - Google chrome擴展,仍然沒有運氣,仍然從服務器獲得相同的響應。 – tsure

+0

你試過XML嗎? – EJK

+0

您可以創建一個方法(a)將URI映射到GET請求,(b)僅在響應中返回單個預填充的UserDetail對象。在瀏覽器中點擊該URI。它返回的內容有望顯示服務器配置的格式。 – EJK

1

設置標題:

Content-Type=application/json 

這解決了我的問題!

相關問題