Android使用HttpClient完成Post和Get方式的联网请求

本文详细介绍如何在Android中使用HttpPost和HttpGet进行网络请求。包括设置连接和读取超时时间、构造请求头参数、使用EntityTemplate支持动态实体以及处理服务器响应等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android联网可以采用HttpPost,HttpGet封装post请求和get请求,再使用HttpClient的excute方法发送post或者get请求并返回服务器的响应数据。

1、设置连接和读取超时时间,并新建HttpClient对象:

// 设置连接超时时间和数据读取超时时间 HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 30000); HttpConnectionParams.setSoTimeout(httpParams, 30000); //新建HttpClient对象 HttpClient httpClient = new DefaultHttpClient(httpParams);

2、Get请求:

HttpPost post = new HttpPost(KeySource.HOST_URL_STR); // set HTTP head parameters Map<String, String> headers = heads; Set<String> setHead = headers.keySet(); Iterator<String> iteratorHead = setHead.iterator(); while (iteratorHead.hasNext()) { String headName = iteratorHead.next(); String headValue = (String) headers.get(headName); post.setHeader(headName, headValue); } /** * 通常的HTTP实体需要在执行上下文的时候动态生成的。 * HttpClient的提供使用EntityTemplate实体类和 ContentProducer接口支持动态实体。 * 内容制作是通过写需求的内容到一个输出流,每次请求的时候都会产生。 * 因此,通过EntityTemplate 创建实体通常是独立的,重复性好。 */ ontentProducer cp = new ContentProducer() { public void writeTo(OutputStream outstream) throws IOException { Writer writer = new OutputStreamWriter(outstream, "UTF-8"); writer.write(requestBody); writer.flush(); writer.close(); } }; HttpEntity entity = new EntityTemplate(cp); post.setEntity(entity); } //执行connect ,需要try ,catch处理 response = httpClient.execute(post);

3、Post请求:

HttpPost post = new HttpPost(KeySource.HOST_URL_STR); // set HTTP head parameters Map<String, String> headers = heads; Set<String> setHead = headers.keySet(); Iterator<String> iteratorHead = setHead.iterator(); while (iteratorHead.hasNext()) { String headName = iteratorHead.next(); String headValue = (String) headers.get(headName); post.setHeader(headName, headValue); } /** * 通常的HTTP实体需要在执行上下文的时候动态生成的。 * HttpClient的提供使用EntityTemplate实体类和ContentProducer接口支持动态实体。 * 内容制作是通过写需求的内容到一个输出流,每次请求的时候都会产生。 * 因此,通过EntityTemplate创建实体通常是独立的,重复性好。 */ ContentProducer cp = new ContentProducer() { public void writeTo(OutputStream outstream) throws IOException { Writer writer = new OutputStreamWriter(outstream, "UTF-8"); writer.write(requestBody); writer.flush(); writer.close(); } }; HttpEntity entity = new EntityTemplate(cp); post.setEntity(entity); } //connect ,need try catch response = httpClient.execute(post);

4、请求Response响应处理:

if (response.getStatusLine().getStatusCode() == 200) { // get response xml. /** * 因为直接调用toString可能会导致某些中文字符出现乱码的情况。所以此处使用toByteArray * 如果需要转成String对象,可以先调用EntityUtils.toByteArray()方法将消息实体转成byte数组, * 在由new String(byte[] bArray)转换成字符串。 */ byte[] bResultXml = EntityUtils.toByteArray(response .getEntity()); if (bResultXml != null) { String strXml = new String(bResultXml, "utf-8"); } } //Todo xmlAnalysis..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值