Android通过URLConnection发送GET/POST请求详解

1 下载量 136 浏览量 更新于2024-08-28 收藏 199KB PDF 举报
在Android开发中,与服务器进行数据交互是常见的任务,通常涉及发送HTTP请求和接收响应。`URLConnection`是Java标准库中的一个类,它允许我们与URL指定的网络资源建立连接并交换数据。在Android中,由于兼容性和性能考虑,`HttpURLConnection`(`URLConnection`的一个子类)是推荐用来执行HTTP请求的API。以下是如何使用`URLConnection`在Android中实现GET和POST请求的详细步骤: 1. 创建URLConnection对象: 首先,你需要创建一个`URL`对象,然后调用它的`openConnection()`方法来获取一个`URLConnection`实例。例如: ```java URL url = new URL("http://example.com/api"); URLConnection connection = url.openConnection(); ``` 2. 配置URLConnection: 在发送请求之前,可能需要配置`URLConnection`的一些属性,比如设置超时时间、启用重定向、设置请求头等。例如: ```java connection.setConnectTimeout(5000); // 设置连接超时时间为5秒 connection.setReadTimeout(5000); // 设置读取超时时间为5秒 connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); // 设置请求头 ``` 3. 发送GET请求: 对于GET请求,只需调用`connect()`方法建立连接,然后从输入流中读取响应数据。例如: ```java connection.connect(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); ``` 4. 发送POST请求: POST请求需要写入请求体,因此首先需要获取到输出流,然后写入数据: ```java connection.setDoOutput(true); // 允许写出 try (PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8"))) { out.println("key1=value1&key2=value2"); // 写入POST参数 } connection.connect(); // 建立连接 ``` 5. 处理响应: 无论是GET还是POST请求,处理响应的方法是一样的,即读取输入流,解析响应数据: ```java BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); ``` 6. 关闭资源: 操作完成后,记得关闭所有打开的流和连接,避免内存泄漏: ```java connection.disconnect(); ``` 在实际开发中,为了代码的可维护性和复用性,通常会将这些操作封装到一个工具类中,如`GetPostUtil`所示。这个类可以接收URL和参数,然后内部处理请求和响应的细节。 总结起来,使用`URLConnection`在Android中发送HTTP请求涉及创建连接对象、配置请求、发送请求数据以及处理响应。对于复杂的请求,可能还需要处理cookies、认证等高级特性。在处理过程中,要注意异常处理和资源管理,确保程序的健壮性。