Retrofit 异步GET请求 *(没有用MVP,仅用于初步了解)

//导入依赖

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

MainActivity代码

public class MainActivity extends AppCompatActivity {

    private TextView text;
    Handler handler=new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = (TextView) findViewById(R.id.text);
    }

    public void getbtn(View view){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.douban.com/v2/")
                .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().create()))
                .build();
        RetrofitService service = retrofit.create(RetrofitService.class);
        Call<Book> call =  service.getSearchBook("金瓶梅", null, 0, 1);
        call.enqueue(new Callback<Book>() {

            private String s;

            @Override
            public void onResponse(Call<Book> call, Response<Book> response) {
                s = response.body().toString();

                        text.setText(s);


            }
            @Override
            public void onFailure(Call<Book> call, Throwable t) {
            }
        });

    }


}

//定义一个接口

实体类已经建好了,我们来看看这个Retrofit如何进行网络请求,其实代码也很简单。首先我们需要定义一个接口,取名RetrofitService


 
 

额。。想必有人要问了,这是什么玩意?跟我们平时定义的接口类很像,但又不一样。别心急,我来一一解释下,和别的接口类一样,我们在其中定义了一个方法getSearchBook,那么这个方法是做什么的呢?其实它干的事很简单,就是拼接一个URL然后进行网络请求。这里我们拼接的URL就是上文提到的测试URL:https://api.douban.com/v2/book/search?q=金瓶梅&tag=&start=0&count=1。聪明的你一定看出来了,在这个URL中book/search就是GET后的值,而?后的q、tag、start、count等入参就是这个方法的入参。有的朋友可能要问了,https://api.douban.com/v2/这么一大串跑哪去了?其实我们在进行网络请求时,在URL中前一部分是相对不变的。什么意思呢,比如你打开间书网站,在间书中你打开不同的网页,虽然它的URL不同,但你会发现,每个URL前面都是以http://www.jianshu.com/开头,我们把这个不变的部分,也叫做baseUrl提出来,放到另一个地方,在下面我们会提到。这样我们一个完整的URL就拼接好了。在方法的开头我们可以看到有个GET的注释,说明这个请求是GET方法,当然你也可以根据具体需要用POST、PUT、DELETE以及HEAD。他们的区别如下:

  • GET ----------查找资源(查)
  • POST --------修改资源(改)
  • PUT ----------上传文件(增)
  • DELETE ----删除文件(删)
  • HEAD--------只请求页面的首部


public interface RetrofitService {

    @GET("book/search")
    Call<Book> getSearchBook(@Query("q") String name,
                             @Query("tag") String tag,
                             @Query("start") int start,
                             @Query("count") int count);


}

//Bean类就不在此展示了,自己找接口测试,以及布局文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值