- 在
Andrroid
开发中,网络请求十分常用
- 而在
Android
网络请求库中,Retrofit
是当下最热的一个网络请求库
这里对Retrofit进行了一下二次封装,把一些固定的代码摘出来了,
import android.util.Log; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * Created by 31962 on 2017/11/2. */ public class RetrofitUtils { private static RetrofitUtils retrofitUtils; private static Retrofit retrofit; public RetrofitUtils() { } public static RetrofitUtils getInstance(){ if(retrofitUtils == null){ synchronized (RetrofitUtils.class){ if(retrofitUtils == null){ retrofitUtils = new RetrofitUtils(); } } } return retrofitUtils; } public static synchronized Retrofit getRetrofit(String url){ HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Override
public void log(String message) { Log.i("xxx", "log: "+message); } }); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient httpClient = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).connectTimeout(5000, TimeUnit.SECONDS).build(); if(retrofit == null){ retrofit = new Retrofit.Builder().baseUrl(url).client(httpClient).addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); } return retrofit; } public <T>T getApiService(String url,Class<T> cl){ Retrofit retrofit = getRetrofit(url); return retrofit.create(cl); } }
这里用的时候需要写一个ApiService接口,用来写请求:
package com.bewei.retrofit.inter; import com.bewei.retrofit.bean.News; import com.bewei.retrofit.bean.Party; import com.bewei.retrofit.bean.User; import retrofit2.Call; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Path; import retrofit2.http.Query; /** * 1. 类的用途 网络接口 * 2. @author forever * 3. @date 2017/11/1 14:32 */ public interface ApiService { /** * 无参get请求 * http://service.meiyinkeqiu.com/service/ads/cptj * * @return */ @GET("service/ads/cptj") Call<News> getNoParams(); /** * 有参get请求 * 拼接参数 /形式 * * @return https://api.github.com/users/baiiu */ @GET("users/{user}") Call<User> getHasParams(@Path("user") String user); /** * http://www.93.gov.cn/93app/data.do * channelId * startNum * 拼接 ? & * 为主 */ @GET("data.do") Call<Party> getHasParams2(@Query("channelId")int channelId, @Query("startNum") int startNum ); /** * post请求 http://120.27.23.105/user/reg 注册 */ @POST("reg") @FormUrlEncoded//支持表单提交 Call<User> register(@Field("mobile")String mobile,@Field("password")String password); }
这里边列出了各种方式的网络请求,
这样,就可以使用Retrofit了