Android入门:URLConnection与HttpClient网络访问教程

需积分: 10 1 下载量 185 浏览量 更新于2024-09-13 收藏 1.21MB PDF 举报
“URLConnection和HttpClient使用入门,适用于Android学习,基于Android 2.2、2.3.3及3.0版本,讲解如何通过代码方式访问网络,包括使用URLConnection对象和HttpClient组件。本教程将通过实例展示如何从Google获取郑州天气预报信息并显示在TextView中。” 在Android应用开发中,访问网络数据是常见的需求。`URLConnection`和`HttpClient`是两种主要的网络访问方式。本教程将引导你入门这两种方法,虽然它们在Android中的使用与Java Web开发类似,但这里我们将专注于Android环境下的应用。 ### 一、URLConnection使用入门 `URLConnection`是Java标准库提供的基础网络连接类,可以直接与任何URL进行通信。以下是一个简单的使用示例: 1. 首先,创建一个新项目`Lesson30_HttpClient`,主Activity为`MainActivity.java`。 2. 在`main.xml`布局文件中,添加一个`TextView`用于显示天气预报信息。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/textView_weather" /> </LinearLayout> ``` 在`MainActivity.java`中,你需要: - 获取URL并建立连接 - 设置输入流读取响应数据 - 将数据读取到字符串并显示在TextView中 ```java try { URL url = new URL("http://weather.google.com/weather?q=Zhengzhou"); URLConnection connection = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); TextView textView = findViewById(R.id.textView_weather); textView.setText(response.toString()); } catch (IOException e) { e.printStackTrace(); } ``` ### 二、HttpClient使用入门 `HttpClient`是Apache HTTP组件,提供了更高级别的API,处理网络请求更为方便。在Android 6.0(API级别23)之前,它被包含在Android SDK中,但现在已被弃用,推荐使用`HttpURLConnection`。然而,对于一些旧项目或者需要更复杂网络操作的情况,仍然有人使用`HttpClient`。 使用`HttpClient`的基本步骤: 1. 创建`HttpClient`实例 2. 创建`HttpGet`或`HttpPost`请求对象 3. 设置请求参数(如果需要) 4. 执行请求并获取`HttpResponse` 5. 处理响应数据 以下是一个使用`HttpClient`获取天气预报的示例: ```java // 引入Apache HTTP库 import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://weather.google.com/weather?q=Zhengzhou"); try { HttpResponse response = httpClient.execute(httpGet); String responseBody = EntityUtils.toString(response.getEntity()); TextView textView = findViewById(R.id.textView_weather); textView.setText(responseBody); } catch (Exception e) { e.printStackTrace(); } ``` 请注意,由于`HttpClient`在新版本的Android中已不再支持,所以在使用时可能需要引入第三方库,如`httpclient-android-x.x.x.jar`。 在实际开发中,为了更好的性能和兼容性,通常会使用第三方库,如OkHttp或Retrofit,它们提供了更现代、高效的网络访问方式。不过,理解`URLConnection`和`HttpClient`的基础原理对深入学习Android网络编程至关重要。