HttpComponents是Apache 旗下的项目。其中有一个HttpClient,即HTTP客户端。

...

...

大多时候我们只需要HttpClient,httpCore是开发服务端的我们可以一般都不需要。

之后我们建立项目,导入jar包,开始开发

第一个示例:

package com.zhi.httpClient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
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;
import org.apache.http.util.EntityUtils; public class Demo {
public static void main(String[] args) {
CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
//CloseableHttpClient意思是:可关闭的
HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、创建实例 //限制类型http://www.tuicool.com/ CloseableHttpResponse closeableHttpResponse=null;
try {
closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
} catch (ClientProtocolException e) { //客户端协议异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) { //IO异常
// TODO Auto-generated catch block
e.printStackTrace();
}
HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体 String str="";
try {
str=EntityUtils.toString(httpEntity, "utf-8"); //获取网页内容,并且指定编码
} catch (ParseException e) { //解析异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str); //关闭closeableHttpResponse
try {
closeableHttpResponse.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //关闭closeableHttpClient
try {
closeableHttpClient.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

  代码有很多,但是很多是在处理异常,所以我们也可以使用throws在方法上抛出,以简化代码格式,让其更好看。

package com.zhi.httpClient;

import org.apache.http.HttpEntity;
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 Test {
public static void main(String[] args) throws Exception {
CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、创建实例
HttpGet httpGet=new HttpGet("http://www.huimsoft.com"); //2、创建请求 CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、执行
HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、获取实体
System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //5、获取网页内容,并且指定编码 closeableHttpResponse.close();
closeableHttpClient.close();
}
}

  当然我们要封装一个方法,然后使用throws抛出,最好不要在main上直接抛出异常。

其实有些网站读取时是有延时的,这个时候才用try...catch来处理比较好。

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。

搞爬虫,主要是用HttpClient模拟浏览器请求第三方站点url,然后响应,获取网页数据,然后用Jsoup来提取我们需要的信息。

HttpClient配置及示例代码的更多相关文章

  1. 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token

    1. 场景 根据OAuth 2.0规范,该场景发生于下面的流程图中的(D)(E)节点,根据已经得到的authorization code获取access token. 2. 实现环境 DotNetOp ...

  2. C#微信公众平台接入示例代码

    http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 这是微信公众平台提供的接入指南.官网只提供了php的示例代码 ...

  3. 股票数据调用示例代码php

    <!--?php // +---------------------------------------------------------------------- // | JuhePHP ...

  4. 【译】用Fragment创建动态的界面布局(附Android示例代码)

    原文链接:Building a Dynamic UI with Fragments 为了在Android上创建一个动态和多视图的用户界面,你需要封装UI控件和模块化Activity的行为,以便于你能够 ...

  5. 一个非常标准的Java连接Oracle数据库的示例代码

    最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项“库”,然后点击“添加外部Jar”,选择“D:\Oracle\app\ ...

  6. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  7. Java连接Oracle数据库的示例代码

    最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径 ->配置构建路径,选择第三项“库”,然后点击“添加外部Jar”,选择 “D:\Oracle\ap ...

  8. 左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

    文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy201 ...

  9. 看完48秒动画,让你不敢再登录HTTP网站(附完整示例代码)

    在我的 单点登录SSO示例代码 一文中,强烈不建议部署HTTP的SSO服务站点. 在此写个基于网络包嗅探的HTTP会话劫持程序,给大家一个直观的危害性展示. 示例中,我在一台Mac上登录58同城,被另 ...

随机推荐

  1. Queen Attack -- 微软2017年预科生计划在线编程笔试第二场

    #!/usr/bin/env python # coding:utf-8 # Queen Attack # https://hihocoder.com/problemset/problem/1497 ...

  2. DS-二叉排序树的插入、查找和删除

    2019-12-02(菜鸡开始学习了...) Data Structure 之 二叉排序树 二叉排序树是给定一个节点后,接下来插入的数如果比它大就会放到它的右孩子那边,比它小就会放到它的左孩子那边. ...

  3. HDU-4081.Qinshihuang'sNationalRoadSystem(次小生成树变种)

    Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  4. A + B Problem II(1002)

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  5. yield-Python大牛必须掌握的高端语法

    小白:大牛哥,刚才看到有一个函数不使用return返回结果,而是使用yield关键字返回结果,看不太明白,Python中yield关键字的用途是什么,它有什么作用呀? 大牛: 要想理解yield的作用 ...

  6. HDU-1394 Minimum Inversion Number (逆序数,线段树或树状数组)

    The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...

  7. log.info()传入多个参数的方法

    不知道项目里用的是啥 ** 版本的 log4j 居然不能传入变长参数 logger.info(String.format("%s %s %s", username, feature ...

  8. javascript基础总汇

    ## javaScript是什么:1.JavaScript 运行在客户端(浏览器)的编程语言2.用来给HTML网页增加动态功能3.用来给HTML网页增加动态功能.4.Netscape在最初将其脚本语言 ...

  9. c# ASP.NET MVC easyui-filebox 图片上传和显示

    原文:https://www.cnblogs.com/huatao/p/4727398.html https://www.cnblogs.com/weiweithe/p/4363458.html 表单 ...

  10. grunt默认只允许localhost和访问,如何设置外部IP地址访问

    转载请注明出处: 猩猩队长  http://www.cnblogs.com/wayns/p/access_grunt_server_from_outside.html 使用Yeoman生成器创建web ...