#目的
见另一篇博客代码需求
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呀!