java - Spring Android - POST 请求 - 来自类对象的 URL 编码参数

标签 java android http-post spring-android

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

,它可以正常工作。

MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();

为此。 有什么方法可以避免 MultiValueMap 并直接将类对象作为请求发送

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

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

代码 fragment

        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);

最佳答案

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

关于java - Spring Android - POST 请求 - 来自类对象的 URL 编码参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220390/

相关文章:

Ubuntu 中的 JAVA_HOME

javascript - 来自 Angular 的 Http Post 请求不起作用

java - JDBC:简单的 MSSql 连接示例不起作用

java - 如何从json创建java对象

java - 在 Java 文件中定义类

java - 我可以使用不同的请求主体创建多个具有相同请求映射的 HTTP POST 方法吗

java - Java中PHP的CURLOPT_POSTFIELDS相当于什么

android - ListView 内部的 Horizo​​ntalScrollView

php - Android Httpget超时

android - 在库模块 : Uknown property 'LibraryVariants' 中使用 Firebase 时出现问题