package com.wp.nevel.base.utils; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; 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.client.utils.URLEncodedUtils; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; import org.junit.Test; import com.wp.nevel.base.exception.ParserException; import com.wp.nevel.base.service.impl.LogServiceHelp; public class HttpClientUtils { public static Logger logger = Logger.getLogger( LogServiceHelp.class); private static HttpClient httpclient; static { httpclient = HttpClients.createDefault(); } @Test public void test(){ String url="http://www.shuchongw.com/files/article/html/23/23114/index.html"; doGetHtmlContent2byte(url); } /** * 根据简单url获取网页数据,转换成byte [] 存储 * */ public static byte[] doGetHtmlContent2byte(String url) { CloseableHttpResponse response = null; byte[] resultByte = {}; try { HttpGet get = new HttpGet(url); System.out.println(url); RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(30000).build(); get.setConfig(requestConfig); try { response = (CloseableHttpResponse) HttpClientUtils.httpclient.execute(get); } catch (UnknownHostException e) { e.printStackTrace(); logger.info("链接主网失败"); } int statusCode = response.getStatusLine().getStatusCode(); System.out.println(statusCode); if (statusCode == 200) { HttpEntity entity = response.getEntity(); resultByte = EntityUtils.toByteArray(entity); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } finally { try { if(response!=null){ response.close(); } } catch (IOException e) { e.printStackTrace(); } } return resultByte; } /** * 根据复杂url获取网页数据,转换成byte [] 存储 * @throws ParserException * @throws IOException * @throws UnknownHostException * @throws ClientProtocolException * @throws SocketException * */ public static byte [] doGetHtmlByParams2Byte(Map<String, String> params, String paramsEncoding, String url) { if (params != null) { List<NameValuePair> formparams = new ArrayList<NameValuePair>(); for (Entry<String, String> entry : params.entrySet()) { formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } if (!formparams.isEmpty()) { String paramsStr = URLEncodedUtils.format(formparams, paramsEncoding!=null?paramsEncoding:"utf-8"); url = url + "?" + paramsStr; } } return doGetHtmlContent2byte(url); } /** * 根据复杂url获取网页数据,转换成String 存储 * @throws ParserException * @throws IOException * @throws UnknownHostException * @throws ClientProtocolException * @throws SocketException * */ public static String doGetHtmlByParams2Text(Map<String, String> params, String paramsEncoding, String url,String htmlEncoding) throws ClientProtocolException, UnknownHostException, SocketException{ try { return getHtmlContentByText(doGetHtmlByParams2Byte(params,paramsEncoding,url),htmlEncoding!=null?htmlEncoding:"utf-8"); } catch (Exception e) { e.printStackTrace(); return ""; } } /** * 根据简单url获取网页数据,转换成String 存储 * @throws ParserException * @throws IOException * @throws UnknownHostException * @throws ClientProtocolException * @throws SocketException * */ public static String doGetHtmlContentToString(String url, String encoding){ try { return getHtmlContentByText(doGetHtmlContent2byte(url),encoding); } catch (Exception e) { e.printStackTrace(); return ""; } } /** * 根据简单url获取网页图片数据, 保存路径[saveImagePath] * @throws ParserException * @throws IOException * @throws UnknownHostException * @throws ClientProtocolException * @throws SocketException * */ public static void getHtml2Image(String url,String saveImagPath){ try { downloadData(doGetHtmlContent2byte(url),saveImagPath); } catch (Exception e) { e.printStackTrace(); } } public static String getHtmlContentByText(byte [] htmlBytes, String encoding){ try { return new String (htmlBytes,encoding!=null?encoding:"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return ""; } } /** * 执行下载io * * @param byte [] data 网页字节流,filename 存储地址和文件名 return * */ public static void downloadData(byte[] data, String filename) { try { DataOutputStream writer = new DataOutputStream( new FileOutputStream(new File(filename))); BufferedOutputStream out = new BufferedOutputStream(writer); out.write(data); out.flush(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static String readFile(String filename) throws IOException{ String xmlContent =null; File file = new File(filename); BufferedReader reader =null; try { if(!file.exists()){ new RuntimeException("文件不存在"); return xmlContent; } StringBuilder buider = new StringBuilder(); String readata =""; reader = new BufferedReader(new FileReader(file)); while(true){ readata = reader.readLine(); if(readata==null){ break; } buider.append(readata).append("\n"); } xmlContent=buider.toString(); } catch (FileNotFoundException e) { e.printStackTrace(); }finally{ if(reader!=null) reader.close(); } return xmlContent; } public static byte [] doGetByteByHttpclient2Url(HttpContext httpContext,CloseableHttpClient client,String url){ byte [] resultBytes = null; try { HttpGet get = new HttpGet(url); CloseableHttpResponse response =client.execute(get, httpContext); int status = response.getStatusLine().getStatusCode(); System.out.println("链接状态="+status); if(status!=200) return resultBytes; HttpEntity entity = response.getEntity(); resultBytes = EntityUtils.toByteArray(entity); } catch (ClientProtocolException e) { throw new RuntimeException("失败连接地址"+url, e); } catch (IOException e) { throw new RuntimeException("失败连接地址"+url, e); } if(resultBytes==null){ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } return resultBytes; } }
相关推荐
总结起来,`httpclient4.3工具类`是一个针对HttpClient 4.3的自定义包装,它封装了常见的HTTP操作,提供了便捷的接口供项目中使用。理解这个工具类的内部实现和HttpClient的核心概念,将有助于更好地利用它进行HTTP...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
HttpClient 4.3是一个重要的版本,它提供了许多改进和新特性,使得开发者可以更高效、更灵活地与Web服务器进行交互。这个压缩包包含了HttpClient 4.3版本所需的jar文件和其他依赖库,以确保能够正确运行基于...
### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...
本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行HTTP和HTTPS请求,并处理响应。它支持各种HTTP方法(如GET、POST、PUT、DELETE等),提供了...
HttpClient 4.3 是 Apache 开源组织提供的一个用于构建 HTTP 客户端应用程序的强大库,主要专注于 HTTP 协议的实现。它建立在 HttpCore 库之上,支持传统的阻塞 I/O 模型,适用于各种需要高效、可控的 HTTP 交互的...
下面是一个简单的HttpClient 4.3模拟登录12306的代码片段,展示如何构造和发送请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet getMethod = new HttpGet(...
在使用HttpClient之前,需要了解它并不是一个完整的浏览器或服务器,而是一个用于HTTP通信的客户端。它主要负责发送和接收HTTP消息,但不涉及消息内容的处理,比如JavaScript解析或内容类型(contentType)的关心等...
- 使用CloseableHttpClient替代HttpClient。 - 调用close()方法关闭连接。 ##### 1.3 HTTP执行上下文 - **定义**:执行HTTP请求时使用的上下文,用于存储各种状态信息。 - **作用**:允许开发者在请求过程中注入...
在HttpClient中,你可以通过`HttpPost`类来创建一个POST请求,然后使用`setEntity`方法添加请求体。最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,...
这个HttpClient-All-jar-4.3版本是HttpClient的一个重要里程碑,包含了4.3版本的所有功能和修复。下面将详细讨论HttpClient的核心概念、主要功能、配置方法以及常见用法。 HttpClient 4.3版本引入了多项改进和优化...
一个简单的易学的 基于HttpClient 4.3发送psot及get请求,返回数据,适合初学者,适合初学者
要创建一个简单的HttpClient实例,你需要以下步骤: 1. 引入Apache HttpClient库: 在你的项目中,确保已经添加了Apache HttpClient的依赖。例如,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
apache httpclient 的几个简单封装,基于httpclient4.3. 示例代码: long len = HttpUtil.download("http://localhost/upload/817.mov", "D:/test.mov"); 内部含有源码jar和lib,请翻阅 httpdownloadutil.jar
### HttpClient 使用指南知识点详解 #### 一、概述与基本概念 **1.1 请求执行** - **1.1.1 HTTP请求**: 在客户端发起HTTP请求时,需要构造一个`HttpRequest`对象,它包含了请求方法(如GET、POST)、请求URL等...
HttpClient 4.3引入了一个新的构建器模式,这使得配置更加灵活和方便: ```java CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(RequestConfig.custom() .setConnectTimeout...
在这个名为"使用HttpClient获取网页html源代码.zip"的压缩包中,包含了一个简单的示例项目——WebDataShow,用于演示如何使用HttpClient获取网页HTML。 首先,我们需要导入Apache HttpClient库。在Android Studio中...
了解并熟练掌握HttpClient的使用,对于提升Java应用程序的网络通信能力至关重要。 HttpClient是由Apache软件基金会开发的开源项目,主要用于执行HTTP请求,支持从简单的GET和POST操作到复杂的HTTP协议特性的完整...
HttpClient的设计目标是为复杂的HTTP应用提供一个简单、一致的API。 二、HttpClient在Android中的挑战 在Android平台上,HttpClient自API级别23(Android 6.0)起被标记为过时,而从API级别26(Android 8.0)开始...
在实践过程中,可以参考压缩包中的`2014.11.3HttpClient练习(一)`文件,它可能包含了一个简单的HttpClient使用示例,通过运行和调试这个例子,可以帮助你更好地理解和掌握HttpClient的用法。 总之,HttpClient在...