Retrofit学习总结

Retrofit2.0学习总结

学习背景:

     今天和一个后台的同事聊天,说你们现在后台开发什么框架最流行,同事说.当然是REST了,和app对接开发

REST既方便又快捷.正好我要和他对接支付方面,所以干脆紧跟时代的潮流,学习一下这个github现在最高的

框架.


     什么是REST?(此段是百度粘贴的,感谢度娘.)

     REST(REpresentational State Transfer)是一组架构约束条件和原则。 

RESTful架构都满足以下规则: 
(1)每一个URI代表一种资源; 
(2)客户端和服务器之间,传递这种资源的某种表现层; 
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

关于更多REST知识点

运行结果为:

OKHTTP简易封装.

		
	client = new OkHttpClient.Builder()
        .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))//注册一个本地应用拦截器,这里有好几个状态. BASIC / HEADERS / BODY 公共参数,头信息,日志拦截
        .retryOnConnectionFailure(true)//是否自动重连
        .connectTimeout(15, TimeUnit.SECONDS)//设置连接超时
        .readTimeout(10,TimeUnit.SECONDS)//设置读超时
        .writeTimeout(10,TimeUnit.SECONDS)//设置写超时
        .addNetworkInterceptor(new LoggingInterceptor())//注册一个网络拦截器
        .build();//构建okhttp
		

		Retrofit简单封装
	
	gson = new GsonBuilder()
        //配置你的Gson
        .setDateFormat("yyyy-MM-dd hh:mm:ss")
        .create();

	retrofit = new Retrofit.Builder()
        .client(OkHttpUtil.getInatance().getOkHttpClient())//设置okhttp
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//提供RxJava支持,如果没有提供响应的支持(RxJava,Call),则会跑出异常。
        .addConverterFactory(GsonConverterFactory.create(gson))//因为这里和后台是通过json交互,所以需要创建一个GsonConverterFactory,可以添加多种序列化Factory
        .baseUrl(BASE_URL)
        .build();
		//这里在初始化的时候就创建了一个RetroFit的对象.我们可以用这个对象来拼接参数进行post和get请求啦
		
	APIInterface 接口
	public interface APIInterface {
    	/**
    	 * 获取节目单 这里一定要注意上面注解中的参数名称和下面path中的参数一定要一模一样.大家还是copy吧.这里坑死我了,一直报正则表达式异常
    	 * @param al_id
    	 * @param hid
    	 * @param uid
     	* @return
    	 */
   	 @POST("/program/{al_id}/{hid}/{uid}")
    	Call<ProgramInfo> getProgramInfo(@Path("al_id") String al_id, @Path("hid") String hid, @Path("uid") String uid);
	
    	/**
    	 * 获取升级
    	 * @param channel_id
   	  * @param app_id
    	 * @param app_version
    	 * @param mac
     	* @return
    	 */
    	@GET("/upgrade/{channel_id}/{app_id}/{app_version}/{mac}")
   	 Call<Update> getUpdate(@Path("channel_id") String channel_id, @Path("app_id") String app_id, @Path("app_version") String app_version, @Path("mac") String mac);

}
		使用方式:
 	RetrofitUtil.getInatance().getProgramInfo("9", "4", "1", new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                Log.d("lichao","success....." + response.body().toString());
            }

            @Override
            public void onFailure(Call call, Throwable t) {
                Log.d("lichao","fail....." +t.getMessage() 
                textView.setText(t.getMessage());
            }
        });
	这里会直接调用
	
	
	重要知识点:
	retrofit:注解
	      其他注解,@Path、@Header,@Headers、@Url

方法注解,包含@GET、@POST、@PUT、@DELETE、@PATH、@HEAD、@OPTIONS、@HTTP。 
标记注解,包含@FormUrlEncoded、@Multipart、@Streaming。 
参数注解,包含@Query,@QueryMap、@Body、@Field,@FieldMap、@Part,@PartMap

	@HTTP:可以替代其他方法的任意一种
		
	@Url:使用全路径复写baseUrl,适用于非统一baseUrl的场景。
		
		

	先写到这里.如果想要了解自定义Converter,请看下一篇文章.
	github地址:https://github.com/LoveCandy1314/RetrofitDemo
	这次要感谢一下文章支持:
	http://blog.csdn.net/wbwjx/article/details/51379506
	http://www.jianshu.com/p/2710ed1e6b48
		

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值