Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 62|回复: 0

安卓调用org.apache.httpcomponents:httpclient

[复制链接]

313

主题

449

帖子

2824

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2824
发表于 2025-6-23 17:51:39 | 显示全部楼层 |阅读模式
可以使用 Apache HttpComponents 的 HttpClient 在 Kotlin 中执行 HTTP 请求。下面是一个简单的示例,展示了如何使用 HttpClient 发送 GET 和 POST 请求。
首先,确保你已经在项目的 build.gradle.kts 文件中添加了 HttpComponents 的依赖
  1. dependencies {
  2.     implementation("org.apache.httpcomponents:httpclient:4.5.13")
  3. }
复制代码
接下来,编写 Kotlin 代码来发送 HTTP 请求
  1. import org.apache.http.HttpEntity
  2. import org.apache.http.HttpResponse
  3. import org.apache.http.client.methods.HttpGet
  4. import org.apache.http.client.methods.HttpPost
  5. import org.apache.http.entity.StringEntity
  6. import org.apache.http.impl.client.CloseableHttpClient
  7. import org.apache.http.impl.client.HttpClients
  8. import org.apache.http.util.EntityUtils
  9. import java.io.IOException

  10. fun main() {
  11.     // 创建一个CloseableHttpClient实例
  12.     val httpClient: CloseableHttpClient = HttpClients.createDefault()

  13.     // 发送GET请求
  14.     sendGetRequest(httpClient, "http://example.com")

  15.     // 发送POST请求
  16.     sendPostRequest(httpClient, "http://example.com/api", "{"key":"value"}")

  17.     // 关闭HttpClient实例
  18.     try {
  19.         httpClient.close()
  20.     } catch (e: IOException) {
  21.         e.printStackTrace()
  22.     }
  23. }

  24. fun sendGetRequest(httpClient: CloseableHttpClient, url: String) {
  25.     val httpGet: HttpGet = HttpGet(url)
  26.     try {
  27.         val response: HttpResponse = httpClient.execute(httpGet)
  28.         val entity: HttpEntity = response.entity
  29.         val responseBody: String = EntityUtils.toString(entity, "UTF-8")
  30.         println("GET Response Status: ${response.statusLine}")
  31.         println("GET Response Body: $responseBody")
  32.     } catch (e: IOException) {
  33.         e.printStackTrace()
  34.     }
  35. }

  36. fun sendPostRequest(httpClient: CloseableHttpClient, url: String, json: String) {
  37.     val httpPost: HttpPost = HttpPost(url)
  38.     httpPost.setHeader("Content-Type", "application/json")
  39.     httpPost.entity = StringEntity(json, "UTF-8")
  40.     try {
  41.         val response: HttpResponse = httpClient.execute(httpPost)
  42.         val entity: HttpEntity = response.entity
  43.         val responseBody: String = EntityUtils.toString(entity, "UTF-8")
  44.         println("POST Response Status: ${response.statusLine}")
  45.         println("POST Response Body: $responseBody")
  46.     } catch (e: IOException) {
  47.         e.printStackTrace()
  48.     }
  49. }
复制代码
代码说明:
1、创建 HttpClient 实例

  1.    val httpClient: CloseableHttpClient = HttpClients.createDefault()
复制代码
2、发送 GET 请求:
创建一个 HttpGet 对象,并传入请求的 URL。
使用 httpClient.execute 方法执行请求。
使用 EntityUtils.toString 方法将响应实体转换为字符串并打印。

3、发送 POST 请求:
创建一个 HttpPost 对象,并传入请求的 URL。
设置请求头 Content-Type 为 application/json。
创建一个 StringEntity 对象,并传入 JSON 数据。
使用 httpClient.execute 方法执行请求。
使用 EntityUtils.toString 方法将响应实体转换为字符串并打印。

4、关闭 HttpClient 实例:
在请求完成后,关闭 CloseableHttpClient 实例以释放资源。
这个示例展示了如何使用 Apache HttpComponents 的 HttpClient 在 Kotlin 中发送 GET 和 POST 请求。你可以根据需要修改 URL 和请求数据

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-7-7 14:53 , Processed in 0.014219 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表