Kotlin项目下Retrofit2的操作方式

参考博文:http://blog.csdn.net/carson_ho/article/details/73732076
GitHub地址:https://github.com/yangtianfu2018/Retrofit2Project
代码实现步骤:

依赖的添加:

网络请求权限,不再多说,相关依赖如下:

 implementation 'com.squareup.retrofit2:retrofit:2.0.2'
    // Retrofit库
    implementation 'com.squareup.okhttp3:okhttp:3.1.2'
    // Okhttp库
    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
//    数据解析器

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

这里写图片描述
代码相当简单,不贴了,如果使用kotlin的方式建立实体类也是可以的,AndroidStrudio3.0以上版本可以自动转换

描述网络请求的接口

get方式:

package com.ytf.ppg.retrofit2application.retrofit;

import com.ytf.ppg.retrofit2application.bean.Translation;

import retrofit2.Call;
import retrofit2.http.GET;

/**
 * Created by ppg on 2018/3/9.
 */

public interface GetRequest_Interface {
    @GET("ajax.php?a=fy&f=auto&t=auto&w=hello%20world")//传BaseURL后的相对path
    Call<Translation> getCall();
    // Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里
    // 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略
    // getCall()是接受网络请求数据的方法

}

Post方式:

package com.ytf.ppg.retrofit2application.retrofit;


import com.ytf.ppg.retrofit2application.bean.TranslationPost;

import java.util.ResourceBundle;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
 * Created by ppg on 2018/3/9.
 * 描述网络请求的接口
 */

public interface PostRequest_Interface {
    @POST("translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen=&ssid=&network=&abtest=")
    @FormUrlEncoded
    Call<TranslationPost> getCall(@Field("i") String target);
}

发起请求的操作:

package com.ytf.ppg.retrofit2application.acvitity

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.ytf.ppg.retrofit2application.R
import com.ytf.ppg.retrofit2application.bean.Translation
import com.ytf.ppg.retrofit2application.bean.TranslationPost
import com.ytf.ppg.retrofit2application.retrofit.GetRequest_Interface
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import com.ytf.ppg.retrofit2application.retrofit.PostRequest_Interface




class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        requestByGet()
        requestByPost()
    }

    /**
     * get方式请求
     */
    private fun requestByGet() {
    //步骤4:创建Retrofit对象
        val retrofit = Retrofit.Builder()
                .baseUrl("http://fy.iciba.com/") // 设置 网络请求 Url
                .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
                .build()

        // 步骤5:创建 网络请求接口 的实例
        val request = retrofit.create(GetRequest_Interface::class.java)

        //对 发送请求 进行封装
        val call = request.call

        //步骤6:发送网络请求(异步)
        call.enqueue(object : Callback<Translation> {
            //请求成功时回调
            override fun onResponse(call: Call<Translation>, response: Response<Translation>) {
                // 步骤7:处理返回的数据结果
                response.body().show()
            }

            //请求失败时回调
            override fun onFailure(call: Call<Translation>, throwable: Throwable) {
                println("连接失败")
            }
        })
    }

    /**
     * post方式请求
     */
    private fun requestByPost() {
        //步骤4:创建Retrofit对象
        val retrofit = Retrofit.Builder()
                .baseUrl("http://fanyi.youdao.com/") // 设置 网络请求 Url
                .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
                .build()

        // 步骤5:创建 网络请求接口 的实例
        val request = retrofit.create(PostRequest_Interface::class.java)

        //对 发送请求 进行封装(设置需要翻译的内容)
        val call = request.getCall("I love you")

        //步骤6:发送网络请求(异步)
        call.enqueue(object : Callback<TranslationPost> {

            //请求成功时回调
            override fun onResponse(call: Call<TranslationPost>, response: Response<TranslationPost>) {
                // 步骤7:处理返回的数据结果:输出翻译的内容
                System.out.println(response.body().getTranslateResult().get(0).get(0).getTgt())
            }

            //请求失败时回调
            override fun onFailure(call: Call<TranslationPost>, throwable: Throwable) {
                println("请求失败")
                println(throwable.message)
            }
        })
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值