首先要注意的是,Android开发中,我们访问网络,请求资源的时候,根据当时的网络状态的情况,请求的时间会不一样,这样如果在UI主线程里面请求网络的话,就可能会出现UI延迟出现的情况,这是用户不能忍受的,所以我们一般是在子线程里面请求网络的。
HttpClient的使用步骤:
1、生成代表客户端的HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
2、生成代表请求的HttpGet对象
HttpGet httpGet = new HttpGet("你请求的URl地址----例如:www.baidu.com");
3、发送请求,获取服务器返回的HttpResponse对象
HttpResponse rp = httpClient.execute(httpGet);
4、检查响应状态是否正常
int code = rp.getStatusLine().getStatusCode();
如果code的值为200,则为正常的相应,有可能出现404或者505等错误!
5、获取响应对象当中的数据
HttpEntity entity = rp.getEntity();
具体实现代码如下:
class NetworkThread extends Thread {
@Override
public void run() {
// 创建HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
// 穿件代表请求的对象,参数是访问服务器的地址
HttpGet httpGet = new HttpGet("你请求的URl地址");
// 执行请求,获取服务器发还的相应对象
try {
HttpResponse rp = httpClient.execute(httpGet);
// 检验相应的状态是否正常,如果值为200则为正常
int code = rp.getStatusLine().getStatusCode();
if (code == 200) {
// 从相应对象中取出数据
HttpEntity entity = rp.getEntity();
InputStream in = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
String line = reader.readLine();
Log.d("HTTP", "取到的数据是:" + line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
最后还有一点,安卓app想要访问网络请求资源就必须要赋予它访问网络的权限,可以在AndroidManifest.xml清单文件中配置权限,加上如下代码:
<uses-permission android:name="android.permission.INTERNET"/>