`
磐石依旧
  • 浏览: 14573 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

spring restTemplate 支持返回近json和xml

阅读更多
servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd">
       
    <mvc:annotation-driven/>
    <context:component-scan base-package="com.spring.mvcrest.web" />
    <bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
          <property name="supportedMediaTypes" value="application/xml"/>
    </bean>
    <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
       <property name="supportedMediaTypes" value="application/json" />
    </bean>
    <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
          <list>
            <value>com.spring.mvcrest.bean.Employee</value>
            <value>com.spring.mvcrest.bean.EmployeeList</value>
          </list>
        </property>
    </bean>
   
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
       <property name="messageConverters">
           <list>
               <ref bean="jsonConverter" />
               <ref bean="marshallingConverter" />
           </list>
       </property>
     </bean>

</beans>



RestClient.java

package com.spring.mvcrest.client;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;

import com.spring.mvcrest.util.CommonsUtil;

public class RestClient {
  
    private static final String preUrl = "http://localhost:8080/spring-mvc-rest/rest/";
    private static RestTemplate restTemplate = new RestTemplate();
   
    /** Add an item*/
    public static Object postJson( Map<String, String> map, String url, String dataType) {
          url =  preUrl + url;
          HttpHeaders requestHeaders = new HttpHeaders();
          List<MediaType> mediaTypes = new ArrayList<MediaType>();
          mediaTypes.add(CommonsUtil.converDataType(dataType));
          requestHeaders.setAccept(mediaTypes);
          HttpEntity<?> requestEntity = new HttpEntity<Object>(map, requestHeaders);
          // Create a new RestTemplate instance
          RestTemplate restTemplate = new RestTemplate();
          return restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class).getBody();
    }
   
    /** Update An item
     */
    public static boolean putJson(Map<String, String> map, String url){
        url =  preUrl + url;
        HttpHeaders headers = new HttpHeaders();
        List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
        acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
        headers.setAccept(acceptableMediaTypes);
       
        // HttpEntity<String> doesn't work, we will use map and headers. map is not String.
        HttpEntity<Object> entity = new HttpEntity<Object>(map, headers);
        restTemplate.put(url, entity);
        return true;
    }
   
    public static Object getjson(String url, String id, String dataType) {
       
        url = preUrl + url + id;
        HttpHeaders requestHeaders = new HttpHeaders();
        List<MediaType> mediaTypes = new ArrayList<MediaType>();
        mediaTypes.add(CommonsUtil.converDataType(dataType));
        requestHeaders.setAccept(mediaTypes);
        HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
        // Create a new RestTemplate instance
        RestTemplate restTemplate = new RestTemplate();
     // Make the HTTP GET request to the Basic Auth protected URL
        return restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class).getBody();
           
        
    }
   
    public static boolean deleteJson(String url, String id) {
      
        url = preUrl + url + id;
        // restTemplate.delete(URL);
        restTemplate.exchange(url, HttpMethod.DELETE, null, String.class);
        return true;
    }
   
  
}


Junit test:

package com.util.test;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import com.spring.mvcrest.client.RestClient;

public class TestRestClient {
   
    @Test
    public void postJsonTest() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("id", "1");
        map.put("name", "2213");
        map.put("email", "123");
        System.out.println(RestClient.postJson(map, "employee", "json"));
       
        map.put("id", "3");
        map.put("name", "JW");
        map.put("email", "sw.com");
        System.out.println(RestClient.postJson(map, "employee", "xml"));
    }
   
    @Test
    public void getJsonTest() {
       Object object = RestClient.getjson("employee/", "1", "xml");
       System.out.println(object);
    }
   
    @Test
    public void putJsonTest() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("id", "2");
        map.put("name", "ze");
        map.put("email", "zh@.com");
        System.out.println(RestClient.putJson(map, "employee"));
       
        getAllJsonTest();
    }
    
   
    @Test
    public void getAllJsonTest(){
      
       System.out.println(RestClient.getjson("employees", "", "xml"));
    }
   
    @Test
    public void deleteJsonTest(){
       getAllJsonTest();
       System.out.println(RestClient.deleteJson("employee/", "2"));
       getAllJsonTest();
    }
   
   
}
分享到:
评论

相关推荐

    springRestTemplate

    在 Spring Boot 中,由于其内置的自动配置特性,使用 RestTemplate 更加方便。让我们深入探讨一下 RestTemplate 的核心概念、功能以及如何在实际应用中进行设置和使用。 1. **什么是 RestTemplate?** RestTemplate...

    Spring RestTemplate Http 工具类,支持 HTTP、HTTPS

    工作中常用的远程调用请求工具类,支持请求方法:GET、POST、PUT、DELETE,支持媒体格式:text/plain、text/xml、application/json、application/x-www-form-urlencoded,支持请求协议:HTTP、HTTPS,该工具类直接可...

    spring rest mvc使用RestTemplate调用

    `RestTemplate`支持多种数据格式的转换,如JSON、XML。默认情况下,它包含`MappingJackson2HttpMessageConverter`来处理JSON。如果需要其他格式,可以添加更多的转换器。 6. **自定义请求头** 可以使用`...

    RestTemplate的使用及需要注意的地方

    默认支持JSON和XML,但如果你想处理其他格式,如Protobuf或CSV,需要自定义并添加`MessageConverter`。 5. **性能优化**:在高负载场景下,可以考虑使用`Apache HttpClient`作为基础客户端,因为它提供了更丰富的...

    RestTemplate实现服务间调用demo案例

    它支持GET、POST、PUT、DELETE等多种HTTP方法,并且可以方便地处理各种响应数据类型,如JSON、XML等。 在Spring Cloud的背景下,服务间的通信通常通过API Gateway或服务发现组件(如Eureka、Consul)来实现。但针对...

    4中url请求方式,包括http和spring自带请求

    RestTemplate支持多种HTTP方法,可以自动转换请求和响应的格式(如JSON,XML),处理HTTP状态码,并且可以方便地进行异常处理。然而,对于复杂的需求,如连接池管理、超时设置等,可能需要直接操作底层的HttpClient...

    RestTemplate例子

    默认支持JSON(`Jackson2JsonHttpMessageConverter`)和XML(`MappingJackson2XmlHttpMessageConverter`)。根据需求,可以添加自定义转换器或调整默认配置。 4. **错误处理** 当HTTP请求失败时,`RestTemplate`会...

    微服务的RestTemplate调用和声明式调用

    它支持GET、POST、PUT等各种HTTP方法,并能处理JSON、XML等多种数据格式。使用`RestTemplate`,你可以自定义请求头、请求体以及超时设置等,实现灵活的请求定制。然而,`RestTemplate`有一个明显的缺点,那就是它...

    json-processing-webapp

    4. Spring框架与JSON:Spring框架提供了强大的支持来构建REST服务,其Spring MVC模块可以轻松地处理JSON请求和响应。使用`@RestController`注解标记控制器类,`@RequestMapping`、`@GetMapping`、`@PostMapping`等...

    用spring构建android互联网应用

    Spring Android Core提供了一些基本服务,如HTTP客户端和OAuth支持,而REST Template则是一个强大的工具,用于执行RESTful API请求,它可以自动处理JSON或XML数据的序列化和反序列化。 接下来,`spring-android-...

    spring官方文档pdf

    - 新增的JPA支持避免使用传统的persistence.xml文件配置,通过注解和Spring的Java配置实现。 - 新的HandlerMethod-based控制器处理,增加了@RequestMapping条件支持。 4. 更多改进 - Spring 3.1版本中新增了缓存...

    使用spring restTemplete 调用腾讯接口返回Entity

    本篇文章将详细讲解如何利用Spring的`RestTemplate`调用腾讯接口,并处理返回的`Entity`对象,同时还会涉及到FastJson这个流行的JSON解析库。 `RestTemplate`是Spring提供的一个客户端HTTP模板类,用于简化HTTP请求...

    详解Springboot之接收json字符串的两种方式

    同时,确保在`pom.xml`文件中添加了对应的依赖,如这里提到的Fastjson,以便于解析JSON数据。 总的来说,Spring Boot提供了强大的工具来处理JSON请求,无论是自动映射到Java对象还是手动解析,都能满足开发者的需求...

    Spring Android Reference Manual

    Spring Android Core模块为整个Spring Android框架提供了核心功能和支持,是其他模块的基础。 4.2 获取依赖 开发者应确保项目中包含了Spring Android Core的依赖。 五、Spring Android与Maven 5.1 引言 本节...

    android的spring框架

    它可以处理HTTP请求,如GET、POST、PUT等,同时支持JSON、XML等多种数据格式的序列化和反序列化,使得与远程API的通信变得更加简单。 3. **Android测试支持** Spring框架提供了一套测试工具,包括`Robolectric`和`...

    Spring Boot RestTemplate提交表单数据的三种方法

    当使用`@ModelAttribute`,Spring会尝试将表单字段映射到一个Java对象,而`@RequestBody`则期望接收到JSON或XML等格式的整个请求体。因此,如果你在Controller中将`@ModelAttribute`改为`@RequestBody`,那么你就是...

    RestTemplate常用使用示例.rar

    它支持多种数据格式,如JSON、XML等。下面我们将详细介绍`RestTemplate`的一些关键用法。 1. 创建`RestTemplate`实例: 在使用`RestTemplate`之前,你需要先创建一个实例。这通常通过Spring容器自动配置,或者手动...

    spring-android-rest-template-1.0.1.RELEASE.jar.zip

    - **数据序列化与反序列化**:内建了对JSON和XML的支持,可以自动将Java对象转换为HTTP请求的主体,同时将HTTP响应转换为Java对象。 - **错误处理**:提供了统一的异常处理机制,当网络请求失败时,能够捕获并处理...

    spring-framework-5.1.x.zip

    7. **RestTemplate**:Spring 提供了 RestTemplate 工具类,方便进行 RESTful API 的调用,支持 JSON、XML 等数据格式的转换。 8. **Spring Boot**:虽然不是 Spring Framework 的一部分,但 Spring Boot 是基于 ...

Global site tag (gtag.js) - Google Analytics