`
kanpiaoxue
  • 浏览: 1777937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Spring RestTemplate 得到HttpStatus,并读取get的body内容

 
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:jms="http://www.springframework.org/schema/jms" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:sec="http://www.springframework.org/schema/security"
	xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"

	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
		http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.0.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.0.xsd
		http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd
		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">


	<bean id="template" class="org.springframework.web.client.RestTemplate">
		<constructor-arg>
			<bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory"/>
		</constructor-arg>
	</bean>

	
</beans>

 

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;

import java.net.URI;

/**
 * <pre>
 * Example01.java
 * @author kanpiaoxue<br>
 * @version 1.0
 * Create Time 2015年1月20日 下午2:59:00<br>
 * Description :类实现描述
 * </pre>
 */
public class Example01 {
    
    public static URI createUri(String host, int port, String path,
            Object... args) {
        UriComponents uriComponents = UriComponentsBuilder.newInstance()
                .port(port).scheme("http").host(host).path(path).build();
        if (null != args && args.length > 0) {
            uriComponents.expand(args);
        }
        uriComponents.encode();
        return uriComponents.toUri();
    }

    /**
     * <pre>
     * @param args
     * </pre>
     */
    public static void init(String[] args) {
        context = new FileSystemXmlApplicationContext(
                "D:/baidu/workspaces/workspace_java/test/src/main/java/com/baidu/learn/spring/restTemplate/spring-ctx-application.xml");
        template = context.getBean("template", RestTemplate.class);
    }

    public static void main(String[] args) {
        init(args);
        // ===========================
        Example01 e = new Example01();
        e.testHttpCode();
        e.testHttpLog();
    }

    private static ApplicationContext context;

    private static RestTemplate template;

    private final String url = "http://cp01-rd-crm-cdc-db05.cp01.baidu.com:8097/dispatch-cdc-etl-test-leader-4597-20150120041830-ShellRunner-0.out";

    /**
     * <pre>
     * @param template
     * @param url
     * @return 是否2xx的成功状态
     * </pre>
     */
    private boolean is2xxSuccessful(RestTemplate template, String url) {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "text/html");
        headers.add(
                "Accept",
                "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,image/webp,*/*;q=0.8");
        headers.add("Accept-Encoding", "gzip, deflate, sdch");
        headers.add("Cache-Control", "max-age=0");
        headers.add("Connection", "keep-alive");
        HttpEntity<String> requestEntity = new HttpEntity<String>(headers);
        ResponseEntity<String> responseEntity = template.exchange(url,
                HttpMethod.GET, requestEntity, String.class);
        HttpStatus status = responseEntity.getStatusCode();
        return status.is2xxSuccessful();
    }

    /**
     * <pre>
     * @param template
     * @param url
     * @return 读取远程url的文件内容
     * </pre>
     */
    private String readContentFromRemote(RestTemplate template, String url) {
        ResponseEntity<String> entity = template
                .getForEntity(url, String.class);
        return entity.getBody();
    }

    private void testHttpCode() {
        boolean is2xxSuccessful = is2xxSuccessful(template, url);
        System.out.println(String.format("url:%s : %s", url, is2xxSuccessful));
    }

    private void testHttpLog() {
        String body = readContentFromRemote(template, url);
        System.out.println(body);
    }
}

 

 

分享到:
评论

相关推荐

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

    它是Spring框架的一部分,提供了一个简单易用的API来发送HTTP请求并处理响应。本文将深入探讨`RestTemplate`的使用方法以及在实际应用中需要注意的关键点。 ### `RestTemplate`的基本使用 1. **创建实例**: 首先...

    spring-rest.rar_DEMO_employeeDS.java_rest spring mvc_spring mvc_

    在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...

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

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

    Spring MVC--6.RESTful SpringMVC CRUD

    return ResponseEntity.status(HttpStatus.CREATED).body(user); } } ``` 2. **读取(Retrieve)**:读取资源通常由`@GetMapping`注解处理。客户端通过发送GET请求获取指定资源的信息。例如,获取单个用户信息可以...

    Spring MVC--7.REST风格 CRUD

    在本教程中,我们将深入探讨Spring MVC框架如何支持RESTful(Representational State Transfer)风格的CRUD(创建、读取、更新和删除)操作。REST是一种软件架构风格,广泛应用于Web服务设计,它强调资源的识别和...

    Spring Boot技术知识点:如何实现二维码生成工具

    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } } ``` 4. **测试与使用**:现在,你可以通过发送GET请求到`/generate?content=your_data`来测试生成二维码的功能。浏览器将显示...

    Spring MVC的文件下载实例详解

    在上述代码中,`@RequestParam`注解用于从URL参数中获取文件名,然后调用`backupService.downloadFile()`读取文件内容,并传递给`downloadResponse()`方法生成响应。最后,这个响应会被返回给客户端,触发浏览器的...

    springmvc 之 RestfulCRUD实例练习工程

    return ResponseEntity.status(HttpStatus.CREATED).body(user); } ``` 在这个例子中,`@RequestBody`注解将请求体转换为User对象,`UserService`处理业务逻辑,最后使用`ResponseEntity`返回HTTP响应,包括状态码...

    springboot2教程之新建个REST API接口(源代码).zip

    在本教程中,我们将深入...通过学习和实践这些内容,你将能够利用Spring Boot 2构建功能丰富的RESTful API,并与其他前端技术(如React、Vue.js等)无缝对接。记得查阅提供的源代码以加深理解,动手实践是最好的老师。

    RESTful Web Service Demo

    // 读取(GET) @GetMapping("/{id}") public ResponseEntity&lt;Customer&gt; get(@PathVariable Long id) { Optional&lt;Customer&gt; optionalCustomer = repository.findById(id); return optionalCustomer.map...

    RestUserManage_registeruserjava_

    return new ResponseEntity(user, HttpStatus.CREATED); } // 其他辅助方法,如验证请求、调用服务层等 } ``` 在这个例子中,`@RequestBody`注解用于将HTTP请求体转换为`UserRegistrationRequest`对象,这通常...

    java 制作简单的系统授权文件以及验证

    return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new AuthResponse(false)); } @GetMapping("/authorize") public ResponseEntity&lt;?&gt; authorize(@RequestParam String username, @RequestParam ...

    json获取数据库的信息在前端页面显示方法

    在Java中,可以使用Spring MVC框架中的`@RequestMapping`注解来定义一个HTTP GET请求处理方法。例如: ```java import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web....

    js异步上传文件

    在文件上传的场景中,Servlet需要解析接收到的FormData数据,读取并保存上传的文件。例如,以下是一个简单的Servlet处理文件上传的片段: ```java @WebServlet("/upload") public class FileUploadServlet extends ...

    REST-Examples:REST 示例

    - **HTTP方法**:GET、POST、PUT、DELETE等,对应于CRUD操作(创建、读取、更新、删除)。 - **状态码(Status Code)**:返回给客户端,表示请求处理结果。 - **表述(Representation)**:资源的不同表现形式,...

    freemarker总结

    1、注释:注释内容--&gt;,不会输出。 2、文本:直接输出。 3、interpolation:由 ${var} 或 #{var} 限定,由计算值代替输出。 4、FTL标记 二.表达式 1、直接指定值: 1-1、字符串: 由双引号或单引号括起来的...

Global site tag (gtag.js) - Google Analytics