1.历史原因:
Android当前不在支持APACHE的一套内容,开始推自己的网络请求库,基本等同于okhttp。但是非常令人失望的是,这个库目前看支持是不全的,对于网络鉴权,只支持BASE的网络鉴权,不支持DIGEST鉴权,因此APACHE的库依然还需要使用。但是GOOGLE比较恶心,在新的COMPILESDK为6.0的时候,不再允许引入APACHE的基本库。
现在的GRADLE配置如下:
useLibrary 'org.apache.http.legacy'
再加上:
compile files('libs/httpclient-android-4.3.5.1.jar')
2.如何使用:
下面介绍一些基本的用法:
连接建立:
HttpClient httpClient = HttpClientBuilder.create().build(); 或者:HttpClient httpClient = HttpClients.custom().build();
创建的是一个CloseableHttpClient类,这个类继承自HttpClient.HttpClients.custom()创建的是一个HttpClientBuilder类。 这个类主要是进行HTTPCLIENT相关的配置,如:public final HttpClientBuilder setSSLSocketFactory( final LayeredConnectionSocketFactory sslSocketFactory)这个方法进行SSL的相关的配置。
public final HttpClientBuilder setConnectionManager(final HttpClientConnectionManager connManager)
进行相关的连接属性配置等等。
大部分的填充内容都继承自原来的APACHE基础库,这样就可以保证相关的兼容性。
原先的HTTPGET,HTTPCONTEXT等并没有变化,HttpResponse response = httpClient.execute(httpGet, context)等还是沿用原来的库; 主要就是HTTPCLIENT的修改。熟悉HttpClientBuilder和CloseableHttpClient,就可以应付一般的网络请求。