Retrofit简单实用

来源:互联网 发布:苹果mac输入法设置 编辑:程序博客网 时间:2024/06/05 19:37

//导入依赖

compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.okio:okio:1.5.0'compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

//创建Apiservice接口类

package android_rxjava.baway.com.retrofitstudy;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;/** * Created by C-PC on 2017/11/5. */public interface ApiService {    /**     * 无参的Get请求     */    @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);}
//mainActivity类

package android_rxjava.baway.com.retrofitstudy;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.Toast;import java.util.List;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //getNoParams();        //getHasParams();        //getHasParams2();        register();    }    //post请求    private void register(){        Retrofit retrofit=new Retrofit.Builder().baseUrl(Api.baseUrl4).addConverterFactory(GsonConverterFactory.create()).build();        ApiService service = retrofit.create(ApiService.class);        Call<User> call = service.register("15137729818", "123456");        call.enqueue(new Callback<User>() {            @Override            public void onResponse(Call<User> call, Response<User> response) {                Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_SHORT).show();            }            @Override            public void onFailure(Call<User> call, Throwable t) {            }        });    }    //有参get请求2    private void getHasParams2(){        Retrofit retrofit=new Retrofit.Builder().baseUrl(Api.baseUrl3).addConverterFactory(GsonConverterFactory.create()).build();        //代理方式的到网络请求接口的对象        ApiService service = retrofit.create(ApiService.class);        Call<Party> call=service.getHasParams2(0,0);        call.enqueue(new Callback<Party>() {            @Override            public void onResponse(Call<Party> call, Response<Party> response) {                Party party = response.body();                String result = party.getResult();                Log.i("xxx",result);            }            @Override            public void onFailure(Call<Party> call, Throwable t) {            }        });    }    //有参get请求    private void getHasParams() {        //创建Retrofit        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.baseUrl2).addConverterFactory(GsonConverterFactory.create()).build();        ////通过动态代理的方式得到网络接口对象        ApiService apiService = retrofit.create(ApiService.class);        Call<User> call = apiService.getHasParams("forever");        call.enqueue(new Callback<User>() {            @Override            public void onResponse(Call<User> call, Response<User> response) {                User user = response.body();                String avatar_url = user.getAvatar_url();                Log.i("xxx",avatar_url);            }            @Override            public void onFailure(Call<User> call, Throwable t) {            }        });    }    //无参get请求    private void getNoParams() {        //创建retrofit        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.baseUrl1).addConverterFactory(GsonConverterFactory.create()).build();        //通过动态代理的代理的方式得到网络请求接口        ApiService apiService = retrofit.create(ApiService.class);        //得到call对象        Call<News> call = apiService.getNoParams();        //执行异步请求 回调到主线程        call.enqueue(new Callback<News>() {            @Override            public void onResponse(Call<News> call, Response<News> response) {                News news = response.body();                List<News.AdsBean> ads = news.getAds();                for (int i = 0; i < ads.size(); i++) {                    News.AdsBean adsBean = ads.get(i);                    Log.i("xxx", adsBean.getGonggaoren());                }            }            @Override            public void onFailure(Call<News> call, Throwable t) {            }        });    }}
//Api类

package android_rxjava.baway.com.retrofitstudy;/** * Created by C-PC on 2017/11/5. */public class Api {    //无参    public final static String baseUrl1 = "http://service.meiyinkeqiu.com/";    //有参 /    public final static String baseUrl2 = "https://api.github.com/";    //有参 ?&    public final static String baseUrl3 = "http://www.93.gov.cn/93app/";    //健值对 字符串    //  public  final static  String baseUrl4 ="http://120.27.23.105/user/";    public final static String baseUrl4 = "https://www.zhaoapi.cn/user/";    //上传图片    public final static String baseUrl5 = "http://169.254.249.24:8080/";}