Retrofit学习

1、retrofit是一个流行的网络加载框架,封装网络请求接口,并通过底层OKhttp完成网络请求。

​ 减少调用网络时所需的代码量,支持很多开源库(json等),请求速度快,降低api的耦合程度

2、retrofit简单应用

①导包

    // Okhttp库
    implementation 'com.squareup.okhttp3:okhttp:3.1.2'
    // Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.0.2'

②设置权限

  <uses-permission android:name="android.permission.INTERNET"/>

③设置网络请求接口

package com.mengfeiyang.retrofitlearn;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;

public interface BookService {

	@GET("page/{id}")      //@GET方法获取网络请求
	Call<ResponseBody> getPage(@Path("id") int id);  //自定义getPage方法,返回ResponseBody类                                                        型数据,即api原始数据;
                                                     //@Path方法通过路径将page/id插入到网站地                                                        址之后
}

④MainActivity编写

package com.mengfeiyang.retrofitlearn;

import androidx.appcompat.app.AppCompatActivity;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;

import android.os.Bundle;
import android.util.Log;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

        //实例化Retrofit对象,并与api地址建立连接
		Retrofit retrofit = new Retrofit.Builder()
				.baseUrl("http://gank.io/api/xiandu/data/id/appinn/count/10/")
				.build();

        //实例化网络请求接口
		BookService bookService = retrofit.create(BookService.class);
		//调用网络请求接口方法,并输入数据
        Call<ResponseBody> call = bookService.getPage(1);

        //发送网络请求(与api地址进行连接)
		call.enqueue(new Callback<ResponseBody>() {
			//成功建立连接调用的方法
            @Override
			public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
				try {
					String s = response.body().string();  //将获得的原始数据转变为字符串
					Log.e("1",s);
				} catch (IOException e) {
					e.printStackTrace();
				}

			}

            //连接建立失败调用的方法
			@Override
			public void onFailure(Call<ResponseBody> call, Throwable t) {
				Log.e("2",t.toString());
			}
		});

	}
}

3、拓展

三类注解配置

a.网络请求方法,除了@GET方法外,还有@POST、@PUT等方法,这些都是HTTP的网络请求方式,@GET发起网 络请求,从服务器中获取数据;而@POST则是发送数据到服务器

b.网络请求参数,@PATH是URL的补充,插入baseUrl的后面,构成完整的网站地址

PATH:相对路径word;文件形式https://www.baidu.com/,完整URL即https://www.baidu.com/word

c.标记类,@FormUrlEncoded,表示请求体是一个form表单,如果baseURL需要的是表单信息,则用此标记类标识。

4、总结

​ retrofit使用步骤:

​ (1)导包

​ (2)编写接收从服务器端获取到原始数据的类

​ (3)编写网络请求接口

​ (4)实例化retrofit

​ (5)实例化网络请求接口及配置注解参数

​ (6)发起网络请求(异步/同步)

​ (7)处理从服务器获取的数据

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值