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();
    }
}

结语

推荐下我的开源作品 PiperChat
PiperChat 是一款简洁高效的即时通讯服务,提供多种技术供开发者选择,帮助开发者快速构建高并发的即时通讯服务。
帮助企业快速接入 IM系统 / 聊天室系统 / 客服系统 等其他实时消息类系统,如果对你有用请求给我一个Star呀!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值