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();
    }
}
原文地址:https://www.cnblogs.com/paper-man/p/13284746.html