抓取了不同网站的图片,其中一个可以显示,另一个提示格式不对,在浏览器里对比了两个图片的响应头,不同之处是一个经过了压缩
在Response里对其进行设置
response.setHeader("Content-Encoding","gzip");
完整代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String USER_AGENT = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)";
//图片的url
String strUrl = request.getParameter("url");
ServletOutputStream out = null;
try {
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", USER_AGENT);
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inStream = conn.getInputStream();
String contentType = conn.getHeaderField("Content-Type");
//设置返回的图片格式
if(null != contentType){
response.setContentType(contentType);
System.out.println("Content-Type: "+contentType);
}
//设置返回的编码格式
String contentEncoding = conn.getHeaderField("Content-Encoding");
if(null != contentEncoding){
response.setHeader("Content-Encoding",contentEncoding);
System.out.println("Content-Encoding: "+contentEncoding);
}
out = response.getOutputStream();
int len = 0;
byte[] byteImg = new byte[2048];
while((len = inStream.read(byteImg)) != -1){
out.write(byteImg,0, len);
}
out.flush();
} catch (Exception e) {
}finally{
try {
if(null != out)
out.close();
} catch (IOException e) {
}
}
}