Spring MVC получает Джексона JSON в качестве параметра - PullRequest
2 голосов
/ 20 декабря 2011

Здравствуйте. В первый раз я хочу извиниться, если мой английский не настолько хорош, я хочу отправить многочастный запрос на сервер 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 в качестве параметра.

Спасибо за любые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...