Parameters 如何使用HttpPost传递类似对象的参数
我使用的RESTfull Web服务具有以下方法:Parameters 如何使用HttpPost传递类似对象的参数,parameters,http-post,apache-httpcomponents,Parameters,Http Post,Apache Httpcomponents,我使用的RESTfull Web服务具有以下方法: @RequestMapping(value = "/rest/secure/Userprofile/{providerId}", method = RequestMethod.POST) @ResponseBody public List<Userprofile> addUserprofile(@RequestBody Object[] socialAccounts, @PathVariable String providerId
@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!!!");
}
@RequestMapping(value=“/rest/secure/Userprofile/{providerId}”,method=RequestMethod.POST)
@应答器
公共列表addUserprofile(@RequestBody Object[]socialAccounts、@PathVariable String providerId、HttpServletRequest请求、HttpServletResponse响应){
System.out.println(“做点什么!!!”;
}
我要传递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);
String json=“{\'id\”:\“26651480000\”,“selected\”:true,“category\”:“Software\”,“perms\”:[“administrate\”,“EDIT\u PROFILE\”,“CREATE\u CONTENT\”,“CREATE\u CONTENT\”,“CREATE\u ADS\”,“BASIC\u ADMIN\”,“provideruserid\”:“1475334273\”,“name\:“Eran\”,“useraccesstoken\”,“useraccesstoken\:”CAABLETMSJHGBANXAHALAQVN1TRI5TQ8GVU002KE8ZB2DCHOO21U8RHERIT77G3CM6CMJ4ZBX2MU8KOEQ\,“已检查”:false,“访问令牌”:“CAAB000WCUQ8O\”;
CloseableHttpClient httpclient=HttpClients.createDefault();
URIBuilder=新的URIBuilder();
builder.setScheme(“http”).setHost(“localhost:8080/AppDev”)
.setPath(“/rest/secure/Userprofile/facebook/”;
URI=builder.build();
HttpPost HttpPost=新的HttpPost(uri);
ArrayList后参数;
postParameters=新的ArrayList();
add(新的BasicNameValuePair(“socialAccounts”,json));
setEntity(新的UrlEncodedFormEntity(后参数));
setHeader(“X-Auth-Token”,userLogged.getToken());
addHeader(“内容类型”,“应用程序/json;字符集=UTF-8”);
CloseableHttpResponse response=httpclient.execute(httppost);
我明白了:HTTP/1.1400错误请求
有什么建议吗?我不能评论,所以我不得不把这个作为答案。 也不确定这是否能解决你的问题 但实际上,您应该替换呼叫:
CloseableHttpResponse response = httpclient.execute(httpget);
与
这很有效
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();
}
您应该指定
内容类型
头,以便端点知道如何解码请求的内容(我认为这不是答案,只是一个提示)
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();
}