Здравствуйте. В первый раз я хочу извиниться, если мой английский не настолько хорош, я хочу отправить многочастный запрос на сервер Apache HttpClient.Этот запрос состоит из нескольких типов частей.Одна из этих частей - JSON.JSON создан Джексоном.
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("http://xxx.xxx.xxx.xx:8080/synchronize");
HttpResponse response =null;
CProject project = new CProject();
project.setId(10L);
project.setName("name");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(project);
MultipartEntity multipart = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE);
multipart.addPart("project", new StringBody(json,"application/json",Charset.forName("UTF-8")) );
httppost.setEntity(multipart);
response = httpclient.execute(httppost);
Структура CProject очень проста
public class CProject implements Serializable{
private Integer id;
private String name;
}
И я ловлю этот запрос на сервере как параметр с аннотациями @RequestParam или @ModelAttribute, но не с@RequestBody, потому что это ловит полный запрос - и мне нужно отправить параметры умножения (Multipart Entity).
Код на сервере
@RequestMapping (value = "/synchronize", method = RequestMethod.POST)
public @ResponseBody
List<Object> getRequest (@RequestParam CProject project, HttpServletResponse response)
{
return null;
}
Проблема в том, что переменная project создана, но ее атрибуты равны нулю.Я пробую несколько уроков в сети, которые работают с @RequestBody и отправляю запрос на сервер и устанавливаю полный заголовок как «application / json».И мое приложение работает, если я изменяю заголовок полного запроса как JSON и отправляю их на сервер, и ловлю это как @RequestBody на сервере.Но мне нужно отправить JSON в качестве параметра.
Спасибо за любые идеи.