首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin项目下的Retrofit2网络请求框架

App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作

在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,Retrofit根据用户的需求对结果进行解析

以下图片来自网络:

原创目录:

get方式:

Post方式:

依赖的添加:

建立获取网络返回数据的实体类

描述网络请求的接口

发起请求的操作:

本文仅仅涉及Retrofit2这个网络请求框架在Java和Kotlin环境下的使用,暂时不与RxJava混合使用,详细内容稍后奉上

参考博文:http://blog.csdn.net/carson_ho/article/details/73732076

GitHub地址:https://github.com/yangtianfu2018/Retrofit2Project

核心代码:

接口类:

GET接口:

packagecom.ytf.ppg.retrofit2application.retrofit;

importcom.ytf.ppg.retrofit2application.bean.Translation;

importretrofit2.Call;

importretrofit2.http.GET;

/**

* Created by ppg on 2018/3/9.

*/

public interfaceGetRequest_Interface {

@GET("ajax.php?a=fy&f=auto&t=auto&w=hello%20world")//传BaseURL后的相对path

CallgetCall();

// Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里

// 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略

// getCall()是接受网络请求数据的方法

}

GET方式请求:

POST类接口:

packagecom.ytf.ppg.retrofit2application.retrofit;

importcom.ytf.ppg.retrofit2application.bean.TranslationPost;

importjava.util.ResourceBundle;

importretrofit2.Call;

importretrofit2.http.Field;

importretrofit2.http.FormUrlEncoded;

importretrofit2.http.POST;

/**

* Created by ppg on 2018/3/9.

* 描述网络请求的接口

*/

public interfacePostRequest_Interface {

@POST("translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen=&ssid=&network=&abtest=")

@FormUrlEncoded

CallgetCall(@Field("i") String target);

}

POST方式:

/**

* post方式请求

*/

private funrequestByPost() {

//步骤4:创建Retrofit对象

valretrofit = Retrofit.Builder()

.baseUrl("http://fanyi.youdao.com/")// 设置 网络请求 Url

.addConverterFactory(GsonConverterFactory.create())//设置使用Gson解析(记得加入依赖)

.build()

// 步骤5:创建 网络请求接口 的实例

valrequest = retrofit.create(PostRequest_Interface::class.java)

//对 发送请求 进行封装(设置需要翻译的内容)

valcall = request.getCall("I love you")

//步骤6:发送网络请求(异步)

call.enqueue(object: Callback {

//请求成功时回调

override funonResponse(call: Call,response: Response) {

// 步骤7:处理返回的数据结果:输出翻译的内容

System.out.println(response.body().getTranslateResult().get().get().getTgt())

}

//请求失败时回调

override funonFailure(call: Call,throwable: Throwable) {

println("请求失败")

println(throwable.message)

}

})

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G129YS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券