android发送get请求

一、权限

<uses-permission android:name="android.permission.INTERNET"/>

二、代码

public static boolean sendGetRequest(String path, Map<String, String> params, String enc) throws Exception{
  StringBuilder sb = new StringBuilder(path);
  sb.append('?');
  // ?method=save&title=435435435&timelength=89&
  for(Map.Entry<String, String> entry : params.entrySet()){
   sb.append(entry.getKey()).append('=')
    .append(URLEncoder.encode(entry.getValue(), enc)).append('&');
  }
  sb.deleteCharAt(sb.length()-1);
  
  URL url = new URL(sb.toString());
  HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  conn.setRequestMethod("GET");
  conn.setConnectTimeout(5 * 1000);
  if(conn.getResponseCode()==200){
   return true;
  }
  return false;
 }

### 使用Retrofit和OkHttp实现Android中的HTTP请求Android开发中,发送HTTP请求是与服务器进行数据交互的核心功能之一。以下是使用OkHttp和Retrofit实现GET和POST请求的代码示例。 --- #### 1. OkHttp实现GET和POST请求 OkHttp是一个高效的HTTP客户端库,支持同步和异步请求。以下是如何使用OkHttp发送GET和POST请求的代码示例。 **GET请求示例:** ```kotlin import okhttp3.OkHttpClient import okhttp3.Request val client = OkHttpClient() fun sendGetRequest(url: String) { val request = Request.Builder() .url(url) .build() client.newCall(request).enqueue(object : okhttp3.Callback { override fun onFailure(call: okhttp3.Call, e: java.io.IOException) { println("Request failed: ${e.message}") } override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) { response.use { if (!response.isSuccessful) throw java.io.IOException("Unexpected code $response") println("Response: ${response.body?.string()}") } } }) } ``` **POST请求示例:** ```kotlin import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody val client = OkHttpClient() fun sendPostRequest(url: String, json: String) { val mediaType = "application/json; charset=utf-8".toMediaType() val body = RequestBody.create(mediaType, json) val request = Request.Builder() .url(url) .post(body) .build() client.newCall(request).enqueue(object : okhttp3.Callback { override fun onFailure(call: okhttp3.Call, e: java.io.IOException) { println("Request failed: ${e.message}") } override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) { response.use { if (!response.isSuccessful) throw java.io.IOException("Unexpected code $response") println("Response: ${response.body?.string()}") } } }) } ``` --- #### 2. Retrofit实现GET和POST请求 Retrofit是一个类型安全的HTTP客户端库,结合注解简化了网络请求的编写过程。以下是使用Retrofit发送GET和POST请求的代码示例。 **步骤1:添加依赖** ```gradle dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' } ``` **步骤2:定义接口** ```kotlin import retrofit2.Call import retrofit2.http.* interface ApiService { @GET("users/{user}/repos") fun getUserRepos(@Path("user") user: String): Call<List<Repo>> @POST("login") fun login(@Body user: User): Call<LoginResponse> } data class Repo(val name: String, val description: String?) data class User(val username: String, val password: String) data class LoginResponse(val token: String) ``` **步骤3:创建Retrofit实例并发起请求** ```kotlin import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory val retrofit = Retrofit.Builder() .baseUrl("https://api.github.com/") .addConverterFactory(GsonConverterFactory.create()) .build() val apiService = retrofit.create(ApiService::class.java) // GET请求示例 val call = apiService.getUserRepos("octocat") call.enqueue(object : retrofit2.Callback<List<Repo>> { override fun onResponse(call: retrofit2.Call<List<Repo>>, response: retrofit2.Response<List<Repo>>) { if (response.isSuccessful) { val repos = response.body() println("Repositories: $repos") } else { println("Error: ${response.code()}") } } override fun onFailure(call: retrofit2.Call<List<Repo>>, t: Throwable) { println("Request failed: ${t.message}") } }) // POST请求示例 val user = User("username", "password") val loginCall = apiService.login(user) loginCall.enqueue(object : retrofit2.Callback<LoginResponse> { override fun onResponse(call: retrofit2.Call<LoginResponse>, response: retrofit2.Response<LoginResponse>) { if (response.isSuccessful) { val loginResponse = response.body() println("Token: ${loginResponse?.token}") } else { println("Error: ${response.code()}") } } override fun onFailure(call: retrofit2.Call<LoginResponse>, t: Throwable) { println("Request failed: ${t.message}") } }) ``` --- #### 总结 上述代码展示了如何使用OkHttp和Retrofit在Android发送GET和POST请求。OkHttp提供了灵活的API来构建和执行HTTP请求[^1],而Retrofit通过注解简化了网络请求的编写过程[^2]。根据项目需求选择合适的工具可以提高开发效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值