retrofit2之学习(一)

retrofit :时下流行的网络请求库

使用步骤:

  1. 添加retrofit库依赖(因为retrofit是基于okhttp存在的,所以也要添加okhttp的依赖)
  2. 创建接收服务器返回数据的类(我感觉技术一个实体 bean)
  3. 创建一个用于描述网络请求的接口
  4. 创建retrofit的实例
  5. 创建网络请求接口的实例,并配置网络请求参数
  6. 发送网络请求(同步、异步)
  7. 处理服务器返回的数据   

代码如下:

第一步:添加依赖

compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.okhttp3:okhttp:3.1.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'

第二步:实体bean

package com.myjob;

/**
 * Created by Administrator on 2018/5/10/010.
 * 第一步:接收服务器返回数据的类
 */

public class Translation {
    /**
     * status : 1
     * content : {"from":"en-EU","to":"zh-CN","out":"示例","vendor":"ciba","err_no":0}
     */

    private int status;
    private ContentBean content;

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public ContentBean getContent() {
        return content;
    }

    public void setContent(ContentBean content) {
        this.content = content;
    }

    public static class ContentBean {
        /**
         * from : en-EU
         * to : zh-CN
         * out : 示例
         * vendor : ciba
         * err_no : 0
         */

        private String from;
        private String to;
        private String out;
        private String vendor;
        private int err_no;

        public String getFrom() {
            return from;
        }

        public void setFrom(String from) {
            this.from = from;
        }

        public String getTo() {
            return to;
        }

        public void setTo(String to) {
            this.to = to;
        }

        public String getOut() {
            return out;
        }

        public void setOut(String out) {
            this.out = out;
        }

        public String getVendor() {
            return vendor;
        }

        public void setVendor(String vendor) {
            this.vendor = vendor;
        }

        public int getErr_no() {
            return err_no;
        }

        public void setErr_no(int err_no) {
            this.err_no = err_no;
        }
    }

}

第三步:请求接口

package com.myjob;

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

/**
 * Created by Administrator on 2018/5/10/010.
 * 第二步:用于创建描述网络请求的接口
 */

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

第四步:发送请求并解析的过程

package com.myjob;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * 第三步:处理返回数据   http://fy.iciba.com/ajax.php?a=fy&f=auto&t=auto&w=hello%20world
 */

public class MainActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

    }
    private void initView() {
        button=findViewById(R.id.btn);
        textView=findViewById(R.id.tv);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                request();//使用retrofit封装的方法
            }
        });

    }
    private void request() {
        //第一步:创建一个retrofit的对象
        final Retrofit retrofit= new Retrofit.Builder()
                .baseUrl("http://fy.iciba.com/")//设置网络请求 的URL
                .addConverterFactory(GsonConverterFactory.create())//设置使用gson解析
                .build();
        //第二步:创建请求接口的实例
        GetRequest_Interface getRequest_interface= retrofit.create(GetRequest_Interface.class);
        //第三步:对发送请求进行封装
        Call<Translation>  call=getRequest_interface.getCall();
        //第四步:发送请求
        call.enqueue(new Callback<Translation>() {
            //第五步:请求成功回调
            @Override
            public void onResponse(Call<Translation> call, Response<Translation> response) {

                //处理返回的数据结果
//                response.body().show();结果可在控制台查看    一种方法
                //第二种方法   解析了部分

                textView.setText("获取的到信息是:状态为"+response.body().getStatus()+"内容为:"+
                        response.body().getContent().getFrom()+","+response.body().getContent().getOut() + "等等");
            }

            @Override//请求失败时回调
            public void onFailure(Call<Translation> call, Throwable t) {
                //
                System.out.println("请求失败");
            }
        });
    }
}

第五步:简单的效果图


-----------------------------------------------------------------------------------------------------------------------------

参考文献:https://blog.csdn.net/carson_ho/article/details/73732076

项目源码:https://download.csdn.net/download/qq_36636969/10405724

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值