10月 11

HttpClient4.3教程 第二章 连接管理


2.1.持久连接

两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间。Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大。但是如果我们直接使用已经建立好的http连接,这样花费就比较小,吞吐率更大。

HTTP/1.1默认就支持Http连接复用。兼容HTTP/1.0的终端也可以通过声明来保持连接,实现连接复用。HTTP代理也可以在一定时间内保持连接不释放,方便后续向这个主机发送http请求。这种保持连接不释放的情况实际上是建立的持久连接。HttpClient也支持持久连接。

2.2.HTTP连接路由 继续阅读

10月 09

HttpClient 4.3教程


httpclient发布了4.3版,改动比较大,之前常用的一些类和方法已经不推荐使用了,在这里对httpclient4.3.1的官方英文文档进行翻译,希望可以坚持到最后。目录如下:

前言

  1. HttpClient的定义
  2. HttpClient不能做的事情

1. 基本概念 继续阅读

10月 09

HttpClient 4.3教程 第一章 基本概念


1.1. 请求执行

HttpClient最基本的功能就是执行Http方法。一个Http方法的执行涉及到一个或者多个Http请求/Http响应的交互,通常这个过程都会自动被HttpClient处理,对用户透明。用户只需要提供Http请求对象,HttpClient就会将http请求发送给目标服务器,并且接收服务器的响应,如果http请求执行不成功,httpclient就会抛出异样。

下面是个很简单的http请求执行的例子:

    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpGet httpget = new HttpGet("https://www.yeetrack.com/");
    CloseableHttpResponse response = httpclient.execute(httpget); 继续阅读 
10月 08

HttpClient 4.3教程-前言

前言

Http协议应该是互联网中最重要的协议。持续增长的web服务、可联网的家用电器等都在继承并拓展着Http协议,向着浏览器之外的方向发展。

虽然jdk中的java.net包中提供了一些基本的方法,通过http协议来访问网络资源,但是大多数场景下,它都不够灵活和强大。HttpClient致力于填补这个空白,它可以提供有效的、最新的、功能丰富的包来实现http客户端。 继续阅读

9月 29

DefaultHttpClient is deprecated

最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有被deprecated。去看了下官方文档,确实不推荐使用了,点击此处详情

  • DefaultHttpClient —> CloseableHttpClient
  • HttpResponse —> CloseableHttpResponse

官方给出了新api的样例,如下。 继续阅读

9月 28

wordpress博客批量导入OSchina博客

WordPress有同步文章到百度hi空间、新浪博客等的插件,没有同步到OSchina博客的插件,而OSChina也没有提供博客导入的功能。就简单用代码(java)实现了这功能,原理:首先wordpress在后台导出文章到xml文件中,然后解析该xml文件,读取出其中的文章,最后使用post请求,将文章发表到OSchina博客空间。 继续阅读

9月 26

Java使用Robot操作键盘和鼠标

Java提供操作键盘和鼠标的API,在java.awt.*包中,官方API参见此处,下面是个简单的例子:

    package com.yeetrack.robot;

    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;

    /**
    * Created with IntelliJ IDEA.
    * User: victor
    * Date: 13-9-26
    * Time: 上午10:03
    */
    public class RobotTest 继续阅读 
9月 25

Android开发、测试持续集成环境Jenkins搭建

传统java项目开发都会利用maven、ant在hudson、jenkins中持续集成,开发、测试、每日构建,保证代码质量。maven默认不支持android,但是我们可以利用maven-android-plugin插件来让maven支持android。

环境

  • jdk 1.6及以上
  • Android sdk(r21及以上),最好是最高版本,最好也安装一下ndk
  • Maven 3.0.3及以上,貌似3.1.0不好使,最好使用3.0.5版

    设置ANDROID_HOME环境变量,将$ANDROID_HOME/tools、$ANDROID_HOME/platform-tools加入到环境变量中

继续阅读

9月 12

DefaultHttpClient 使用GZIPInputStream解压缩


DefaultHttpClient 使用GZIPInputStream解压缩
当浏览器访问网站时,有可能浏览器返回的消息头中带有 Content-Encoding:gzip,表明服务器返回的消息经过gzip压缩,这么做是为了节省流量,浏览器拿到gzip压缩后的http包,对其进行解压缩,再渲染出来。在使用apache提供的DefaultHttpClient操作http请求时,可以使用GZIPInputStream对gzip压缩过的数据包进行解压缩。android sdk进行网络编程时,也可以使用这种方法。 继续阅读

9月 02

Slowloris拒绝服务攻击

DDOS攻击,中文翻译为分布式拒绝服务攻击,是利用客户端的请求,造成服务器资源过度占用,服务器忙于处理这些请求,一些合法的用户请求得不到处理,导致服务不可用。常见的ddos攻击有SYN flood、UDP flood、ICMP flood等。其中SYN flood是一种最为经典的DDOS攻击。其利用的是TCP协议设计中的缺陷,此处先避开不谈。

而Slowloris攻击则是利用web server的漏洞(或者说是参数配置不合理),直接造成拒绝服务。Slowloris是在2009年由著名Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。

怎么算是恶意的请求呢,可以构造一个局部http请求,也就是一个不完整的http请求。 继续阅读