2014-11-05 4 views
0

Я использую RESTfull WebService с помощью этого метода:Как передать объект как параметры с HttpPost

@RequestMapping(value = "/rest/secure/Userprofile/{providerId}", method = RequestMethod.POST) 
@ResponseBody 
public List<Userprofile> addUserprofile(@RequestBody Object[] socialAccounts, @PathVariable String providerId, HttpServletRequest request, HttpServletResponse response) { 
     System.out.println("do something!!!"); 
} 

Я хочу передать socialAccount объект.

String json = "{\"id\":\"26651480000\",\"selected\":true,\"category\":\"Software\",\"perms\":[\"ADMINISTER\",\"EDIT_PROFILE\",\"CREATE_CONTENT\",\"MODERATE_CONTENT\",\"CREATE_ADS\",\"BASIC_ADMIN\"],\"provideruserid\":\"1475334273\",\"name\":\"Eran\",\"useraccesstoken\":\"CAABletmsJHgBANXAhAlaQXVN1TrI5Tq8gvU002Ke8ZB2dcAhoo21u8orrHiT77G3cm6CmJ4zBX2mu8koeq\",\"checked\":false,\"access_token\":\"CAAB0000wcuq8O\"}"; 

    CloseableHttpClient httpclient = HttpClients.createDefault(); 
    URIBuilder builder = new URIBuilder(); 
    builder.setScheme("http").setHost("localhost:8080/AppDev") 
    .setPath("/rest/secure/Userprofile/facebook/"); 
    URI uri = builder.build(); 

    HttpPost httppost = new HttpPost(uri); 
    ArrayList<NameValuePair> postParameters; 
    postParameters = new ArrayList<NameValuePair>(); 
    postParameters.add(new BasicNameValuePair("socialAccounts", json)); 
    httppost.setEntity(new UrlEncodedFormEntity(postParameters));  
    httppost.setHeader("X-Auth-Token", userLogged.getToken()); 
    httppost.addHeader("Content-Type", "application/json;charset=UTF-8"); 
    CloseableHttpResponse response = httpclient.execute(httppost); 

Я получаю это: HTTP/1.1 400 Bad Request

Некоторые советы?

+1

Вы должны указать 'заголовок Content-type' поэтому конечная точка будет знать, как декодировать содержимое запрос в (я не думаю, что это ответ, хотя, только наконечник) –

ответ

0

Я не могу комментировать, поэтому мне придется ответить на этот вопрос. Также не уверен, если это решит вашу проблему Но на самом деле, вы должны заменить вызов:

CloseableHttpResponse response = httpclient.execute(httpget); 

с

CloseableHttpResponse response = httpclient.execute(httppost); 
+0

Тпх для answare, его пока не работает –

0

, который работает.

CloseableHttpClient httpclient = HttpClients.createDefault(); 
     URIBuilder builder = new URIBuilder(); 
     builder.setScheme("http").setHost("localhost:8080/AppDev") 
     .setPath("/rest/secure/Userprofile/facebook/"); 
     URI uri; 
     try { 
      uri = builder.build(); 

      HttpPost http = new HttpPost(uri); 
      http.setHeader("X-Auth-Token", userLogged.getToken()); 
      http.addHeader("content-type", "application/json"); 

      String json = "[{\"category\":\"Public figure\",\"category_list\":[{\"id\":\"1756452480085\",\"name\":\"Catholic Church\"}],\"name\":\"Pope Francesco fans\",\"access_token\":\"token1\",\"perms\":[\"ADMINISTER\",\"EDIT_PROFILE\",\"CREATE_CONTENT\",\"MODERATE_CONTENT\",\"CREATE_ADS\",\"BASIC_ADMIN\"],\"id\":\"346277202148996\",\"checked\":false,\"selected\":true,\"provideruserid\":\"1475334273\",\"useraccesstoken\":\"usertoken\"},{\"category\":\"Shopping/retail\",\"category_list\":[{\"id\":\"2006019953504\",\"name\":\"Shopping & Retail\"}],\"name\":\"fanpage\",\"access_token\":\"token2\",\"perms\":[\"ADMINISTER\",\"EDIT_PROFILE\",\"CREATE_CONTENT\",\"MODERATE_CONTENT\",\"CREATE_ADS\",\"BASIC_ADMIN\"],\"id\":\"535193443194952\",\"checked\":false,\"selected\":true,\"provideruserid\":\"1475334273\",\"useraccesstoken\":\"usertoken2\"}]"; 

      StringEntity params = new StringEntity(json); 
      http.setEntity(params); 
      CloseableHttpResponse response = httpclient.execute(http); 

      try { 
       HttpEntity entity = response.getEntity(); 
       if (entity != null) { 
        String json1 = EntityUtils.toString(entity); 

        System.out.println(json1); 
       } 
      } finally { 
       response.close(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
Смежные вопросы