2015-12-02 58 views
1

我想用Spring RestTemplate做一個簡單的HTTP POST。 的WESB服務接受JSON的參數,例如:{"name":"mame","email":"[email protected]"}在Spring Rest中使用JSON的HTTP POST

public static void main(String[] args) { 

    final String uri = "url"; 
    RestTemplate restTemplate = new RestTemplate(); 
    // Add the Jackson message converter 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
    // create request body 
    String input = "{ \"name\": \"name\", \"email\": \"[email protected]\" }"; 
    JsonObject request = new JsonObject(); 
    request.addProperty("model", input); 

    // set headers 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 
    headers.set("Authorization", "Basic " + "xxxxxxxxxxxx"); 
    HttpEntity<String> entity = new HttpEntity<String>(request.toString(), headers); 

    // send request and parse result 
    ResponseEntity<String> response = restTemplate 
      .exchange(uri, HttpMethod.POST, entity, String.class); 

    System.out.println(response); 
} 

當我測試這個代碼,我得到這個錯誤:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 400 Bad Request 

當我打電話web服務與捲曲我有正確的結果:

curl -X POST -H "Authorization: Basic xxxxxxxxxx" --header "Content-Type: application/json" --header "Accept: application/json" -d "{ \"name\": \"name\", \"email\": \"[email protected]\" } " "url" 
+0

添加你要訪問web服務代碼和郵遞員或正確執行卷曲表達的截圖...... –

+0

I'haven't訪問web服務。通過使用curl,我可以使用以下命令調用ws:curl -X POST -H「Authorization:Basic xxxxxxxxxx」--header「Content-Type:application/json」--header「Accept:application/json」-d「{\ 「name \」:\「name \」,\「email \」:\「[email protected] \」} 「」url「 –

回答

8

嘗試從代碼中刪除model,因爲我可以在您的捲髮請求中看到您沒有使用模型屬性,並且一切正常。試試這個:

public static void main(String[] args) { 

    final String uri = "url"; 
    RestTemplate restTemplate = new RestTemplate(); 
    // Add the Jackson message converter 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
    // create request body 
    String input = "{\"name\":\"name\",\"email\":\"[email protected]\"}"; 


    // set headers 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 
    headers.set("Authorization", "Basic " + "xxxxxxxxxxxx"); 
    HttpEntity<String> entity = new HttpEntity<String>(input, headers); 

    // send request and parse result 
    ResponseEntity<String> response = restTemplate 
      .exchange(uri, HttpMethod.POST, entity, String.class); 

    System.out.println(response); 
} 
+0

這是工作非常感謝。 –

+1

消息轉換器可以將Java對象轉換爲json字符串嗎?假設輸入是一個類型爲User的ojbect。用戶=新用戶(「姓名」,「[email protected]」); – fall