Android的HttpClient详解
创新互联于2013年开始,先为淇县等服务建站,淇县等地企业,进行企业商务咨询服务。为淇县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
在Android开发中,网络请求是必不可少的一部分,而HttpClient是Android提供的一个用于发送HTTP请求的类,它继承自org.apache.http.client.AbstractHttpClient,可以发送GET、POST等请求,本文将对HttpClient进行详细的介绍。
HttpClient是Apache提供的一个用于发送HTTP请求的开源库,它可以发送各种类型的HTTP请求,如GET、POST、PUT、DELETE等,在Android中,HttpClient被封装在org.apache.http.client包中,开发者可以通过引入该包来使用HttpClient。
1、创建HttpClient实例
在使用HttpClient之前,首先需要创建一个HttpClient实例,可以通过以下两种方式创建:
(1)通过默认构造函数创建:
DefaultHttpClient httpClient = new DefaultHttpClient();
(2)通过自定义构造函数创建:
CloseableHttpClient httpClient = HttpClients.custom().build();
2、创建请求方法
创建完HttpClient实例后,需要创建一个请求方法,可以通过以下方式创建:
(1)创建Get请求:
String url = "http://www.example.com"; HttpGet httpGet = new HttpGet(url);
(2)创建Post请求:
String url = "http://www.example.com"; Listparams = new ArrayList<>(); params.add(new BasicNameValuePair("key", "value")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, Consts.UTF_8); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(entity);
3、执行请求并获取响应结果
创建完请求方法后,就可以执行请求并获取响应结果了,可以通过以下方式执行请求:
try { ResponseHandlerresponseHandler = new ResponseHandler () { @Override public String handleResponse(final HttpResponse httpResponse) throws IOException { int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode >= 200 && statusCode < 300) { HttpEntity entity = httpResponse.getEntity(); return entity != null ? EntityUtils.toString(entity) : null; } else { throw new ClientProtocolException("Unexpected response status: " + statusCode); } } }; String responseBody = httpClient.execute(httpGet, responseHandler); System.out.println(responseBody); } catch (IOException e) { e.printStackTrace(); } finally { httpClient.close(); }
1、在使用完HttpClient后,需要调用其close方法关闭连接,释放资源,否则可能会导致内存泄漏。
2、HttpClient不支持并发请求,如果需要并发请求,可以使用线程池或者异步任务来实现。
3、从Android 6.0开始,系统对网络请求进行了限制,需要在运行时动态申请权限,可以使用Android Support Library中的AppCompatActivity和NetworkInfo类来实现。
4、如果需要使用HTTPS协议,需要在创建SSLContext时传入一个密钥库文件和密码。SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();
,然后将SSLContext设置到HttpClientBuilder中:builder.setSSLSocketFactory(sslContext.getSocketFactory());
,最后将HttpClientBuilder设置到CloseableHttpClient中:CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslContext.getSocketFactory()).build();
。
5、如果需要设置超时时间,可以在创建RequestConfig对象时设置:RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(1000).setSocketTimeout(1000).build();
,然后将RequestConfig设置到HttpClientBuilder中:builder.setDefaultRequestConfig(requestConfig);
,最后将HttpClientBuilder设置到CloseableHttpClient中:CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(requestConfig).build();
。
6、如果需要设置代理服务器,可以在创建Proxy对象时设置:Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.1.1", 8888));
,然后将Proxy设置到RequestConfig对象中:requestConfig.setProxy(proxy);
,最后将RequestConfig设置到HttpClientBuilder中:builder.setDefaultRequestConfig(requestConfig);
,最后将HttpClientBuilder设置到CloseableHttpClient中:CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(requestConfig).build();
。
分享名称:android的androidhttpClient详解
文章源于:http://www.csdahua.cn/qtweb/news14/134164.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网