Retrofit简单使用

翻译 2018年04月15日 14:14:15
//Bean类
package com.bwie.httpdemo;

import com.google.gson.annotations.SerializedName;

/**
 * Created by eric on 2018/4/13.
 */

public class MessageBean<T> {
    @SerializedName("msg")
    private String message;
    private String code;
    private T data;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

//集合数据  我这是分开写的      根据个人的习惯
package com.bwie.httpdemo;

import com.google.gson.annotations.SerializedName;

/**
 * Created by eric on 2018/4/13.
 */

public class News {

    /**
     * desc : 还在用ListView?
     * ganhuo_id : 57334c9d67765903fb61c418
     * publishedAt : 2016-05-12T12:04:43.857000
     * readability :
     * type : Android
     * url : http://www.jianshu.com/p/a92955be0a3e
     * who : 陈宇明
     */

    private String desc;
    @SerializedName("ganhuo_id")
    private String ganhuoId;
    private String publishedAt;
    private String readability;
    private String type;
    private String url;
    private String who;

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getGanhuoId() {
        return ganhuoId;
    }

    public void setGanhuoId(String ganhuoId) {
        this.ganhuoId = ganhuoId;
    }

    public String getPublishedAt() {
        return publishedAt;
    }

    public void setPublishedAt(String publishedAt) {
        this.publishedAt = publishedAt;
    }

    public String getReadability() {
        return readability;
    }

    public void setReadability(String readability) {
        this.readability = readability;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getWho() {
        return who;
    }

    public void setWho(String who) {
        this.who = who;
    }
}

//ApiService
package com.bwie.httpdemo;

import java.util.List;
import java.util.Map;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

/**
 * Created by eric on 2018/4/13.
 */

public interface ApiService {
    @GET("user/getUserInfo")
    Call<MessageBean<LoginInfo>> getInfo(@Query("uid") String id);

    @GET("search/query/listview/category/Android/count/{count}/page/{page}")
    Call<MessageData<List<News>>> getNews(@Path("count") String count, @Path("page") String page);

    @POST("")
    @Headers({"source:android"})
    Call<String> callPost(@Header("source") String header);
}


//Mainactivity
package com.bwie.httpdemo;

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

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

public class RetrofitActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "RetrofitActivity";
    private TextView txtShow;
    private Button btnRequest;
    private Button btnRequestGank;

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

        txtShow = findViewById(R.id.txt_show);
        btnRequest = findViewById(R.id.btn_request);
        btnRequestGank = findViewById(R.id.btn_request_gank);

        btnRequest.setOnClickListener(this);
        btnRequestGank.setOnClickListener(this);

        Log.i(TAG, "主线程: " + Thread.currentThread().getId() + "---" + Thread.currentThread().getName());

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_request:
                requestNormal();
                break;
            case R.id.btn_request_gank:
                requestGank();
                break;
        }
    }

    /**
     * 请求干货的接口
     */
    private void requestGank() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://gank.io/api/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiService service = retrofit.create(ApiService.class);

        Call<MessageData<List<News>>> call = service.getNews("10", "1");
        call.enqueue(new Callback<MessageData<List<News>>>() {
            @Override
            public void onResponse(Call<MessageData<List<News>>> call, Response<MessageData<List<News>>> response) {
                List<News> results = response.body().getResults();
                if (results != null) {
                    Log.i(TAG, "获取的新闻条目数量是: " + results.size());
                } else {
                    Log.i(TAG, "获取的新闻条目数量是: 0");
                }
            }

            @Override
            public void onFailure(Call<MessageData<List<News>>> call, Throwable t) {
                Log.e(TAG, "onFailure: " + t.getMessage());
            }
        });

    }

    // 普通的网络请求
    private void requestNormal() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.zhaoapi.cn/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiService service = retrofit.create(ApiService.class);

//        Map<String, String> params = new HashMap<>();
//        params.put("uid", "71");
//        Call<MessageBean<LoginInfo>> call = service.getInfo(params);
        Call<MessageBean<LoginInfo>> call = service.getInfo("71");
        call.enqueue(new Callback<MessageBean<LoginInfo>>() {
            @Override
            public void onResponse(Call<MessageBean<LoginInfo>> call, Response<MessageBean<LoginInfo>> response) {
                // 和okhttp不一样的是,回调已经是在主线程了,不需要手动切换了
                Log.i(TAG, "retrofit回调线程: " + Thread.currentThread().getId() + "---" + Thread.currentThread().getName());
                Log.i(TAG, "onResponse: " + response.body().getMessage());
                txtShow.setText("网络请求成功");
            }

            @Override
            public void onFailure(Call<MessageBean<LoginInfo>> call, Throwable t) {
                Log.e(TAG, "onFailure: " + t.getMessage());
            }
        });
    }
}

retrofit的简单使用

  • 2016年03月15日 12:57
  • 9.86MB
  • 下载

android 介绍Retrofit的简单使用

android 介绍Retrofit的简单使用
  • bitian123
  • bitian123
  • 2016-07-13 17:18:11
  • 112482

Retrofit2.0的简单使用 (包含Gson)

http://blog.csdn.net/bskfnvjtlyzmv867/article/details/70667041 (转) 参考博客: Retrofit2使用(非常简...
  • u010507199
  • u010507199
  • 2017-10-15 01:53:15
  • 187

Rxjava+Retrofit的简单使用Demo

  • 2017年10月20日 15:29
  • 2.8MB
  • 下载

Retrofit2简单实例

Retrofit2简单实例
  • guchuanhang
  • guchuanhang
  • 2016-12-09 18:52:14
  • 1886

Retrofit使用教程(一)- Retrofit入门详解

本篇博客主要讲解以下问题 - Retrofit简介 - Retrofit的简单使用例子 - Retrofit的get请求 - Retrofit的put请求(提交表单数据) - 如何为 retrofit...
  • gdutxiaoxu
  • gdutxiaoxu
  • 2016-10-06 20:38:34
  • 2996

Retrofit2.0+okhttp3+gson的简易用法

一,首先加入依赖库,几种导入JAR包的方法,Gradle这个是比较简单直接的,我就用这个添加 compile 'com.squareup.retrofit2:retrofit:2.1.0' com...
  • chanqu1961
  • chanqu1961
  • 2018-03-01 18:01:08
  • 76

Retrofit2.0详解(一简单使用)

几个月前,对Retrofit进行了一个系统的学习,不过没有做一个整理和总结,正好国庆没什么事就写几篇博客对Retrofit的简单使用,上传下载进度监听,封装使用,源码解析做一个学习,记录如下 ...
  • qq_31694651
  • qq_31694651
  • 2016-10-07 11:30:34
  • 2109

Retrofit的post get请求使用(流程完整)

  • 2016年04月19日 17:27
  • 676KB
  • 下载

retrofitDemo

  • 2016年06月09日 22:08
  • 7.59MB
  • 下载
收藏助手
不良信息举报
您举报文章:Retrofit简单使用
举报原因:
原因补充:

(最多只允许输入30个字)