zoukankan      html  css  js  c++  java
  • Android--Retrofit的简单使用(一)

    1,如果不太了解retrofit的同学可以先去官网学习一下简单使用:http://square.github.io/retrofit/,这里我们以一个简单的Get请求的例子来练习一下

    2,https://api.douban.com/v2/movie/top250?start=0&count=10 目标地址,由于数据太多我就不再啰嗦数据解析了,如果觉得Gson数据麻烦的话可以使用GsonFormat插件,先来看看怎么添加依赖吧

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.0"
    
        defaultConfig {
            applicationId "com.qianmo.retrofitdemo"
            minSdkVersion 15
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:25.0.0'
        compile 'io.reactivex:rxjava:1.1.0'
        compile 'io.reactivex:rxandroid:1.1.0'
        compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
        compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
        compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
        compile 'com.google.code.gson:gson:2.6.2'
        compile 'com.jakewharton:butterknife:7.0.1'
    
       //这里其实只需要添加下面的这几个就可以了
        compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
        compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
        compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
        compile 'com.google.code.gson:gson:2.6.2'
        compile 'com.jakewharton:butterknife:7.0.1
    }
    

    2,看一下我们的布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.qianmo.retrofitdemo.MainActivity">
    
        <TextView
            android:id="@+id/tv_show"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="还没有数据"/>
    
        <Button
            android:id="@+id/btn_request"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="32dp"
            android:text="请求网络数据"/>
    </RelativeLayout>
    

    再看看我们的Activity

    package com.qianmo.retrofitdemo;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import com.qianmo.retrofitdemo.entry.MovieEntity;
    import com.qianmo.retrofitdemo.http.MovieService;
    
    import butterknife.Bind;
    import butterknife.ButterKnife;
    import butterknife.OnClick;
    import retrofit2.Call;
    import retrofit2.Callback;
    import retrofit2.Response;
    import retrofit2.Retrofit;
    import retrofit2.converter.gson.GsonConverterFactory;
    
    public class MainActivity extends AppCompatActivity {
    
        @Bind(R.id.tv_show)
        TextView tvShow;
        @Bind(R.id.btn_request)
        Button btnRequest;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
        }
    
        @OnClick({R.id.btn_request})
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.btn_request:
                    getMovie();
                    break;
            }
        }
    
        //请求网络数据
        private void getMovie() {
    
            
        }
        
        
    }
    

    由于是网络请求,所以千万别忘记网络请求权限

    接下来为我们的数据创建一个bean,MovieBean,代码太多了,就不贴了,然后就开始创建我们的service接口,由于是get请求的基本语法,所以就没什么可以讲解的

    package com.qianmo.retrofitdemo.http;
    
    import com.qianmo.retrofitdemo.entry.MovieEntity;
    
    import retrofit2.Call;
    import retrofit2.http.GET;
    import retrofit2.http.Query;
    
    /**
     * Created by wangjitao on 2016/11/3 0003.
     * 获取电影列表接口
     */
    public interface MovieService {
        @GET("top250")
        Call<MovieEntity> getTopMovie(@Query("start") int start ,@Query("count") int count);
    }
    

    在Activity中使用

            String baseUrl = "https://api.douban.com/v2/movie/";
    
            //创建Retrofit对象
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
    
            MovieService movieService = retrofit.create(MovieService.class);
            Call<MovieEntity> call = movieService.getTopMovie(0, 10);
            call.enqueue(new Callback<MovieEntity>() {
                @Override
                public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {
                    tvShow.setText(response.body().getTitle());
                }
    
                @Override
                public void onFailure(Call<MovieEntity> call, Throwable t) {
                    tvShow.setText(t.getMessage());
                }
            });
    

    首先创建Retrofit对象,然后在创建Call对象,这样我们就可以请求网络数据了,感觉很简单啊  有木有·····  

      

     

      

      

  • 相关阅读:
    数位dp
    可持久化Trie
    网络流
    欧拉定理
    点、边双,圆方树
    [USACO5.3]窗体面积Window Area
    6.2三道模拟
    BZOJ2054 疯狂的馒头
    [USACO5.1]夜空繁星Starry Night
    [USACO5.1]乐曲主题Musical Themes
  • 原文地址:https://www.cnblogs.com/wjtaigwh/p/6025802.html
Copyright © 2011-2022 走看看