HttpClient4.3 使用经验(一) 简单使用
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中post请求http、https示例
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...
- Haproxy基础知识 -运维小结
开源软件负载均衡器 现在常用的三大开源软件负载均衡器分别是Nginx.LVS.Haproxy. 在之前的文章中已经对比了这三个负载均衡软件, 下面根据自己的理解和使用经验, 再简单说下这三个负载均衡软 ...
- HttpClient4.5简单使用
一.HttpClient简介 HttpClient是一个客户端的HTTP通信实现库,它不是一个浏览器.关于HTTP协议,可以搜索相关的资料.它设计的目的是发送与接收HTTP报文.它不会执行嵌入在页面中 ...
- dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
- 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
- jqGrid使用经验分享(一)——jqGrid简单使用、json格式和jsonReader介绍
广大的读者朋友们大家好,很高兴又可以在博客中和大家分享我的开发经验了. 此次,我准备向大家介绍一个非常好用的jQuery表格插件——jqGrid. 如果您在实际项目中遇到web端表格展示功能的需求,又 ...
- hashmap简单实例(个人使用经验)
一.HashMap<int,String>是错误的:因为int是基本类型,而key和value要求是对象,所以要用Integer而不是int.HashMap<String,Objec ...
- httpclient4 模拟访问网页 模拟登录 简单例子
JAVA后台模拟登录一个网站,获得一定权限后进一步操作. 所用的工具: Apache HttpComponents client 4.3版本 以下为代码: import org.apache.http ...
- Redis之个人简单理解
1.什么是redis? 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.M ...
随机推荐
- Codeforces Round #226 (Div. 2)A. Bear and Raspberry
/* 贪心的找到相邻两项差的最大值,再减去c,结果若是负数答案为0. */ 1 #include <stdio.h> #define maxn 105 int num[maxn]; int ...
- OS X: Keyboard shortcuts
Using keyboard shortcuts To use a keyboard shortcut, press a modifier key at the same time as a char ...
- C# WinForm修改Panel边框颜色
private void panel1_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, thi ...
- 教程-(SQL DBE、ADO连接)+(Firebird火鸟+DbExpress)+(VF DBF数据库)+(DB Paradox)
DBE 连接SQL Server显然用ADO或DBEXPRESS更有优势,起码连接起来比较方便. BDE的话可以用如下方法:(以下以Delphi7为例,其它版本的DELPHI请自己摸索一下,不过基本相 ...
- 前景还是“钱景”——MM应用引擎的自我博弈
纵观当前的移动互联网发展态势,巨大的商机已经展露无遗,各个领域的企业及个人对于APP的开发如火如荼,许多APP从诞生伊始,就面临着软件开发的专业性,商业模式的模糊性,以及市场推广的艰巨性三个巨大难题, ...
- js基础一
1.声明提升:变量的声明提升,函数的声明提升,但函数赋值表达式不会提升: foo(); // 正常运行,因为foo在代码运行前已经被创建 function foo() {} foo(); // 出错: ...
- HDU 1518 Square
解题思路:sum%4!=0 , max<sum/4 #include<iostream>#include<cstdio>#include<cstring> ...
- SQL Server:OA权限管理设计的实现 下
SQL Server:OA权限管理设计的实现 下 OA系统权限管理设计方案 不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最基本的功能. 可以对“组”进行权限 ...
- Delphi 调用批处理
uses ShellApi; procedure TForm1.Button1Click(Sender: TObject); var filename, Path: string; begin fil ...
- 使用startCoroutine制定倒计时
使用startCoroutine制定倒计时 using UnityEngine; using System.Collections; public class TimerCoroutine : Mon ...