HttpClient学习使用(1)
来源:互联网 发布:制作linux启动u盘 编辑:程序博客网 时间:2024/06/03 10:33
参考http://blog.csdn.net/jediael_lu/article/details/26176787
1、HttpClient相关的重要资料
官方网站:http://hc.apache.org/
API:http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/apidocs/index.html
tutorial: http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/index.html
【PDF版本】http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/pdf/httpclient-tutorial.pdf
2、使用HttpClient进行网络处理的基本步骤
(1)通过get的方式获取到Response对象。
- CloseableHttpClient httpClient = HttpClients.createDefault();
- HttpGet httpGet = new HttpGet("http://www.baidu.com/");
- CloseableHttpResponse response = httpClient.execute(httpGet);
注意,必需要加上http://的前缀,否则会报:Target host is null异常。
- HttpEntity entity = response.getEntity();
注:HttpClient将Response的正文及Request的POST/PUT方法中的正文均封装成一个HttpEntity对象。可以通过entity.getContenType(),entity.getContentLength()等方法获取到正文的相关信息。但最重要的方法是通过getContent()获取到InputStream对象。
(3)通过Entity获取到InputStream对象,然后对返回内容进行处理。
- is = entity.getContent();
- sc = new Scanner(is);
- // String filename = path.substring(path.lastIndexOf('/')+1);
- String filename = "2.txt";
- os = new PrintWriter(filename);
- while (sc.hasNext()) {
- os.write(sc.nextLine());
- }
使用HtppClient下载一个网页的完整代码如下:
- package com.ljh.test;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.PrintWriter;
- import java.io.Writer;
- import java.util.Scanner;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpStatus;
- import org.apache.http.client.ClientProtocolException;
- 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;
- public class DownloadWebPage{
- public static void downloadPagebyGetMethod() throws IOException {
- // 1、通过HttpGet获取到response对象
- CloseableHttpClient httpClient = HttpClients.createDefault();
- HttpGet httpGet = new HttpGet("http://www.baidu.com/");
- CloseableHttpResponse response = httpClient.execute(httpGet);
- InputStream is = null;
- Scanner sc = null;
- Writer os = null;
- if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
- try {
- // 2、获取response的entity。
- HttpEntity entity = response.getEntity();
- // 3、获取到InputStream对象,并对内容进行处理
- is = entity.getContent();
- sc = new Scanner(is);
- // String filename = path.substring(path.lastIndexOf('/')+1);
- String filename = "2.txt";
- os = new PrintWriter(filename);
- while (sc.hasNext()) {
- os.write(sc.nextLine());
- }
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } finally {
- if (sc != null) {
- sc.close();
- }
- if (is != null) {
- is.close();
- }
- if (os != null) {
- os.close();
- }
- if (response != null) {
- response.close();
- }
- }
- }
- }
- public static void main(String[] args) {
- try {
- downloadPagebyGetMethod();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
注意:直接将HttpGet改为HttpPost,返回的结果有误,百度返回302状态,即重定向,新浪返回拒绝访问。怀疑大多网站均不允许POST方法直接访问网站。
总结:
1.使用jar如下:
commons-logging-1.1.1.jarhttpclient-4.3.3.jarhttpcore-4.3.jar
0 0
- HttpClient学习使用(1)
- HttpClient学习 使用 详解
- HttpClient 组件学习使用
- HttpClient使用学习(转载)
- android 学习笔记 使用HttpClient
- httpClient学习笔记1
- HttpClient学习(1)
- HttpClient 学习1
- HttpClient 学习整理1
- Android 学习之--HttpClient详细使用
- httpclient学习笔记(1)
- HttpClient学习笔记(1)
- apache HttpClient学习系列---1
- httpclient 学习
- HttpClient学习
- HttpClient学习
- HttpClient 学习
- HttpClient 学习
- 分享内容的截图的实现方法
- Cocos2d-Lua 3.3 API的用法 -- (一)
- Yii2中系统定义的常用路径别名,如果获取web的url
- 3.9 带 x 轴多阈值分割的柱状图
- git查看、删除分支
- HttpClient学习使用(1)
- Linux查看磁盘占用情况df命令
- 访问网络工具类
- Isomorphic Strings
- 最小生成树prim
- QR二维码生成器源码(中间可插入小图片)
- DFS POJ 2362 Square
- OkHttp
- 严蔚敏数据结构习题3.17