OkHttp3+Retiofit结合使用简单的写法

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了
首先先把jar包导入,包括返回值为Gson(其中是支持返回对象的)和String的
使用步骤:
1.首先要在gradle里面引用网络类库
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
//结合Okhttp3来使用.
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
2.需要定义一个接口:
在接口里面写get和Post方式,来请求数据其实都是一样的,都要网里面传参格式如下:
public interface RequestServes {
//代表的意思是:mobilenumber/mobilenumber?phone=后面的值
    @GET("mobilenumber/mobilenumber")
    Call getPhone(@Query("phone") String phone);
}
3.在代码里面填写内容就可以了,一般把一下封装成Utils来写
public class MainActivity extends AppCompatActivity {

    private RequestServes requestServes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://apis.baidu.com/apistore/")
                //可以设置OkHttp来访问网络可以设置请求头
//                .client(getClient())
                //增加返回值为String的支持
                .addConverterFactory(ScalarsConverterFactory.create())
                //增加返回值为Gson的支持(以实体类返回)
//                .addConverterFactory(GsonConverterFactory.create())
                //增加返回值为Oservable的支持
//                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        //采用java的动态代理模式
        requestServes = retrofit.create(RequestServes.class);
        Call call = requestServes.getPhone("15210011578");
        call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                Log.e("111111111",response.body().toString());
                Toast.makeText(MainActivity.this,response.body().toString(),Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(Call call, Throwable t) {

            }
        });
    }

    public static OkHttpClient getClient() {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient httpClient = new OkHttpClient.Builder()
                .readTimeout(60, TimeUnit.SECONDS)//设置读取超时时间
                .writeTimeout(60,TimeUnit.SECONDS)//设置写的超时时间
                .connectTimeout(60,TimeUnit.SECONDS)//设置连接超时时间
                .addInterceptor(logging)
                .addInterceptor(new Interceptor() {
                    @Override
                    public okhttp3.Response intercept(Chain chain) throws IOException {
                        Request request = chain.request()
                                .newBuilder()
                                .addHeader("apikey","948bd930bca1bca364f1b443f303bf32")
                                .build();
                        return chain.proceed(request);
                    }

                })
                .build();

        return httpClient;
    }

}




你可能感兴趣的:(OkHttp3+Retiofit结合使用简单的写法)