Spring Android - POST请求 - 来自类对象的URL编码参数 [英] Spring Android - POST Request - URL Encoded Params from Class Object

查看:177
本文介绍了Spring Android - POST请求 - 来自类对象的URL编码参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Android Spring POST请求中发送一些键值对。如果我使用

I am trying to send some key-value pairs in Android Spring POST Request.It works correctly , if I am using a

,它可以正常工作 MultiValueMap< String,String> map = new LinkedMultiValueMap< String,String>();

有没有办法避免MultiValueMap&直接发送Class Object作为请求

找到的一个解决方案是使用Reflection,如下所示

One solution found is using Reflection , like the following

for (Field field:objAuth.getClass().getDeclaredFields()){
                    field.setAccessible(true);
                    map.add(field.getName(),field.get(objAuth)+"");
                }






Code Snippet


Code Snippet

        RestTemplate restTemplate = new RestTemplate(true);
        restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
        restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
        restTemplate.getMessageConverters().add(new StringHttpMessageConverter());


        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

        MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
        Authenticate objAuth = new Authenticate();
        objAuth.setUserId("1");
        objAuth.setType("Type");
        objAuth.setoAuthToken("00112233");
        objAuth.setResponseCode("9689");
        objAuth.setResponseMessage("Last Message");

        /**
         * Using Reflection
         */
        for (Field field:objAuth.getClass().getDeclaredFields()){
            field.setAccessible(true);
            map.add(field.getName(),field.get(objAuth)+"");
        }

        HttpEntity<?> requestEntity = new HttpEntity<Object>(map , requestHeaders);

        String response = restTemplate.postForObject("http://posttestserver.com/post.php",requestEntity, String.class);


推荐答案

发布媒体类型 APPLICATION_FORM_URLENCODED 使用 FormHttpMessageConverter ,您必须使用 MultiValueMap ,如图所示这里。或者,如果要发布JSON,则在内部使用Jackson将任何对象类转换为JSON输出。 Spring使用消息转换器来确定如何读/写对象,以及哪些类型与哪些媒体类型兼容。

When posting a media type of APPLICATION_FORM_URLENCODED with FormHttpMessageConverter, you must use a MultiValueMap, as seen here. Alternatively, if you want to post JSON, Jackson is used internally to convert any object class to JSON output. Spring uses message converters to determine how to read/write objects, and which types are compatible with which media types.

这篇关于Spring Android - POST请求 - 来自类对象的URL编码参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆