代码
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(); ???????} ???????????} ???}
使用httpclient下载 页面、图片
原文地址:https://www.cnblogs.com/zhao1949/p/8175658.html