您的位置:首页 > 理论基础 > 计算机网络

使用httpclient下载 页面、图片

2018-01-02 09:11 197 查看
代码

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyHttpClientUtils {

private static Logger logger = LoggerFactory.getLogger(MyHttpClientUtils.class);

private static final int  HTTPCLIENT_TIMEOUT = 5000;

public static Tuple2<Boolean,String> getPageByUrl(String pageUrl, String encode) throws UnsupportedEncodingException{
logger.info("pageurl=" + pageUrl);
String body = null;
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(HTTPCLIENT_TIMEOUT)   //socket超时
.setConnectTimeout(HTTPCLIENT_TIMEOUT)   //connect超时
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
HttpGet httpGet = new HttpGet(pageUrl);
try {
CloseableHttpResponse response = httpClient.execute(httpGet);
String statusCode = String.valueOf(response.getStatusLine().getStatusCode());
logger.info("getStatusCode=" + response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() != 200) {
logger.info("返回码异常:" + response.getStatusLine().getStatusCode());
return new Tuple2<Boolean, String>(false, null);
}
body = EntityUtils.toString(response.getEntity(), encode);
//                System.out.println("body=" + body);
} catch (IOException e) {
System.out.println("----------Connection timeout--------");
//                return ne
}
return new Tuple2<Boolean, String>(true, body);
}

public static Tuple2<Boolean,byte[]> getPicByteArray(String picUrl) throws ClientProtocolException, IOException {
logger.info("下载url=" + picUrl);
RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(HTTPCLIENT_TIMEOUT).setConnectTimeout(HTTPCLIENT_TIMEOUT).build();
CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
HttpGet httpGet = new HttpGet(picUrl);
CloseableHttpResponse response = httpClient.execute(httpGet);

logger.info("返回的状态码:" + response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() == 200) {
byte[] bytes = EntityUtils.toByteArray(response.getEntity());
return new Tuple2<>(true, bytes);
}else{
return new Tuple2<>(false, null);
}
}
}


package testGetpic;

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.http.Header;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class TestPic2 {

public static void main(String[] args) throws IOException{
RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(6000).setConnectTimeout(6000).build();
CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
HttpGet httpGet = new HttpGet("http://xxxx.com/abc.jpg");
CloseableHttpResponse response = httpClient.execute(httpGet);
Header[] headerArray =  response.getAllHeaders();
for(Header h : headerArray) {
System.out.println(h.getName());
System.out.println(h.getValue());
System.out.println("======");
}

System.out.println("---------------");

System.out.println(response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() == 200) {

//            for(Header h :response.getAllHeaders()){
//                System.out.println(h.getElements().length);
//                for(HeaderElement he :h.getElements()){
//                    System.out.println("pc="  + he.getParameterCount());
//                }
//                System.out.println( h.getName() );
//                System.out.println( h.getValue() );
//            }

byte[] b = EntityUtils.toByteArray(response.getEntity());
FileOutputStream fos = new FileOutputStream("test2.jpg");
fos.write(b);
fos.close();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐