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();
}
}
分享到:
相关推荐
在 Spring Boot 中,由于其内置的自动配置特性,使用 RestTemplate 更加方便。让我们深入探讨一下 RestTemplate 的核心概念、功能以及如何在实际应用中进行设置和使用。 1. **什么是 RestTemplate?** RestTemplate...
工作中常用的远程调用请求工具类,支持请求方法:GET、POST、PUT、DELETE,支持媒体格式:text/plain、text/xml、application/json、application/x-www-form-urlencoded,支持请求协议:HTTP、HTTPS,该工具类直接可...
`RestTemplate`支持多种数据格式的转换,如JSON、XML。默认情况下,它包含`MappingJackson2HttpMessageConverter`来处理JSON。如果需要其他格式,可以添加更多的转换器。 6. **自定义请求头** 可以使用`...
默认支持JSON和XML,但如果你想处理其他格式,如Protobuf或CSV,需要自定义并添加`MessageConverter`。 5. **性能优化**:在高负载场景下,可以考虑使用`Apache HttpClient`作为基础客户端,因为它提供了更丰富的...
它支持GET、POST、PUT、DELETE等多种HTTP方法,并且可以方便地处理各种响应数据类型,如JSON、XML等。 在Spring Cloud的背景下,服务间的通信通常通过API Gateway或服务发现组件(如Eureka、Consul)来实现。但针对...
RestTemplate支持多种HTTP方法,可以自动转换请求和响应的格式(如JSON,XML),处理HTTP状态码,并且可以方便地进行异常处理。然而,对于复杂的需求,如连接池管理、超时设置等,可能需要直接操作底层的HttpClient...
默认支持JSON(`Jackson2JsonHttpMessageConverter`)和XML(`MappingJackson2XmlHttpMessageConverter`)。根据需求,可以添加自定义转换器或调整默认配置。 4. **错误处理** 当HTTP请求失败时,`RestTemplate`会...
它支持GET、POST、PUT等各种HTTP方法,并能处理JSON、XML等多种数据格式。使用`RestTemplate`,你可以自定义请求头、请求体以及超时设置等,实现灵活的请求定制。然而,`RestTemplate`有一个明显的缺点,那就是它...
4. Spring框架与JSON:Spring框架提供了强大的支持来构建REST服务,其Spring MVC模块可以轻松地处理JSON请求和响应。使用`@RestController`注解标记控制器类,`@RequestMapping`、`@GetMapping`、`@PostMapping`等...
Spring Android Core提供了一些基本服务,如HTTP客户端和OAuth支持,而REST Template则是一个强大的工具,用于执行RESTful API请求,它可以自动处理JSON或XML数据的序列化和反序列化。 接下来,`spring-android-...
- 新增的JPA支持避免使用传统的persistence.xml文件配置,通过注解和Spring的Java配置实现。 - 新的HandlerMethod-based控制器处理,增加了@RequestMapping条件支持。 4. 更多改进 - Spring 3.1版本中新增了缓存...
本篇文章将详细讲解如何利用Spring的`RestTemplate`调用腾讯接口,并处理返回的`Entity`对象,同时还会涉及到FastJson这个流行的JSON解析库。 `RestTemplate`是Spring提供的一个客户端HTTP模板类,用于简化HTTP请求...
同时,确保在`pom.xml`文件中添加了对应的依赖,如这里提到的Fastjson,以便于解析JSON数据。 总的来说,Spring Boot提供了强大的工具来处理JSON请求,无论是自动映射到Java对象还是手动解析,都能满足开发者的需求...
Spring Android Core模块为整个Spring Android框架提供了核心功能和支持,是其他模块的基础。 4.2 获取依赖 开发者应确保项目中包含了Spring Android Core的依赖。 五、Spring Android与Maven 5.1 引言 本节...
它可以处理HTTP请求,如GET、POST、PUT等,同时支持JSON、XML等多种数据格式的序列化和反序列化,使得与远程API的通信变得更加简单。 3. **Android测试支持** Spring框架提供了一套测试工具,包括`Robolectric`和`...
当使用`@ModelAttribute`,Spring会尝试将表单字段映射到一个Java对象,而`@RequestBody`则期望接收到JSON或XML等格式的整个请求体。因此,如果你在Controller中将`@ModelAttribute`改为`@RequestBody`,那么你就是...
它支持多种数据格式,如JSON、XML等。下面我们将详细介绍`RestTemplate`的一些关键用法。 1. 创建`RestTemplate`实例: 在使用`RestTemplate`之前,你需要先创建一个实例。这通常通过Spring容器自动配置,或者手动...
- **数据序列化与反序列化**:内建了对JSON和XML的支持,可以自动将Java对象转换为HTTP请求的主体,同时将HTTP响应转换为Java对象。 - **错误处理**:提供了统一的异常处理机制,当网络请求失败时,能够捕获并处理...
7. **RestTemplate**:Spring 提供了 RestTemplate 工具类,方便进行 RESTful API 的调用,支持 JSON、XML 等数据格式的转换。 8. **Spring Boot**:虽然不是 Spring Framework 的一部分,但 Spring Boot 是基于 ...