Rxjava方式:
// 创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
// 创建 API 接口定义
public interface ApiService {
@GET("data")
Observable<DataResponse> fetchData();
}
// 创建数据模型类
public class DataResponse {
private String data;
public String getData() {
return data;
}
}
// 创建 Retrofit 实例
ApiService apiService = retrofit.create(ApiService.class);
// 发起同步请求
DataResponse data = apiService.fetchData().blockingFirst();
// 可以直接使用 data 对象处理请求结果
自定义 CallAdapter:
// 自定义同步 CallAdapter
public class SyncCallAdapter<T> implements CallAdapter<T, T> {
@Override
public Type responseType() {
return null;
}
@Override
public T adapt(Call<T> call) {
try {
Response<T> response = call.execute();
if (response.isSuccessful()) {
return response.body();
} else {
throw new IOException("Request failed: " + response.errorBody().string());
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
// 创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(new SyncCallAdapterFactory())
.build();
// 创建 API 接口定义
public interface ApiService {
@GET("data")
DataResponse fetchData();
}
// 创建数据模型类
public class DataResponse {
private String data;
public String getData() {
return data;
}
}
// 创建 Retrofit 实例
ApiService apiService = retrofit.create(ApiService.class);
// 发起同步请求
DataResponse data = apiService.fetchData();
// 可以直接使用 data 对象处理请求结果