安卓开发之Retrofit的简单实用
文章预览前言一、Retrofit的简单实用1.1、引入依赖1.2、根据Http接口创建Java接口1.3、MainActivity.java二、测试前言Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装参考文章https://www.jianshu.com/p/865e9ae667
·
前言
Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装
参考文章
https://www.jianshu.com/p/865e9ae667a0
https://blog.csdn.net/carson_ho/article/details/73732076
一、Retrofit的简单实用
1.1、引入依赖
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
1.2、根据Http接口创建Java接口
package com.enjoy.networkdemo;
import java.util.Map;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.HEAD;
import retrofit2.http.HTTP;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
public interface HttpbinService {
/**
* @FormUrlEncoded请求参数的格式
* @Field 服务器需要的参数名称
* @param userName
* @param pwd
* @return
*/
@POST("post")
@FormUrlEncoded //请求参数的格式
Call<ResponseBody> post(@Field("username") String userName, @Field("password") String pwd);
/**
* Query服务器需要的参数名称
* @param userName
* @param pwd
* @return
*/
@GET("get")
Call<ResponseBody> get(@Query("username") String userName, @Query("password") String pwd);
}
1.3、MainActivity.java
核心
retrofit = new Retrofit.Builder().baseUrl("https://www.httpbin.org/").build();
httpbinService = retrofit.create(HttpbinService.class);
package com.enjoy.networkdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private OkHttpClient okHttpClient;
private Retrofit retrofit;
private HttpbinService httpbinService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
okHttpClient = new OkHttpClient();
retrofit = new Retrofit.Builder().baseUrl("https://www.httpbin.org/").build();
httpbinService = retrofit.create(HttpbinService.class);
}
public void postAsync(View view) {
retrofit2.Call<ResponseBody> call = httpbinService.post("xxxx", "123456");
call.enqueue(new retrofit2.Callback<ResponseBody>() {
@Override
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
Log.i(TAG, "postAsync: " + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
}
});
}
}
二、测试
更多推荐
已为社区贡献8条内容
所有评论(0)