zoukankan      html  css  js  c++  java
  • httpclient处理返回数据

    目的

    见另一篇博客代码需求
    https://blog.csdn.net/GY325416/article/details/81412078

    处理返回数据

    使用httpclient请求过后,返回的数据(在对象CloseableHttpResponse里面)如何处理,如何返回到前台页面?
    我们只需将CloseableHttpResponse对象数据取出放到HttpServletResponse对象即可,如下

     /**
     * 处理返回文件
     * 
     * @param response 前台页面的响应
     * @param closeableHttpResponse  httpclient请求过后返回数据
     * @author piper
     * @data 2018/7/3 10:56
     */
    public void fileHandle(HttpServletResponse response, CloseableHttpResponse closeableHttpResponse) {
        ServletOutputStream out = null;
        try {
            Header encode = closeableHttpResponse.getFirstHeader("Content-Type");  //请求头,要返回content-type,以便前台知道如何处理
            response.setHeader(encode.getName(), encode.getValue());
    
            HttpEntity entity = closeableHttpResponse.getEntity();  //取出返回体
            out = response.getOutputStream();  得到给前台的响应流
            entity.writeTo(out);  //将返回体通过响应流写到前台
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    如果要在返回前台之前对数据(比如js,html文件)做一些处理,可以这样做

    /**
     * 处理html
     *
     * @param response 前台页面的响应
     * @param closeableHttpResponse  httpclient请求过后返回数据
     * @author piper
     * @data 2018/7/3 10:56
     */
    public void htmlHandle(HttpServletResponse response, CloseableHttpResponse closeableHttpResponse) {
        try {
            Header encode = closeableHttpResponse.getFirstHeader("Content-Type");
            response.setHeader(encode.getName(), encode.getValue());
    
            String html = EntityUtils.toString(closeableHttpResponse.getEntity());  //将返回的html转换为字符
            String res = htmlConvert(html);  //处理html
    
            PrintWriter writer = response.getWriter();  //获得返回流
            writer.print(res);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 相关阅读:
    leetcode每日刷题计划-简单篇day10
    leetcode每日刷题计划-简单篇day9
    leetcode每日刷题计划-简单篇day8
    leetcode每日刷题计划-简单篇day7
    leetcode每日刷题计划-简单篇day6
    leetcode每日刷题计划-简单篇day5
    leetcode每日刷题计划-简单篇day4
    leetcode每日刷题计划-简单篇day3
    设计模式解决 if-else
    线程池
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284746.html
Copyright © 2011-2022 走看看