当前位置: 首页 > 编程日记 > 正文

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 25buildToolsVersion "25.0.0"defaultConfig {applicationId "com.qianmo.retrofitdemo"minSdkVersion 15targetSdkVersion 25versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles 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"?>
<RelativeLayoutxmlns: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"><TextViewandroid:id="@+id/tv_show"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="还没有数据"/><Buttonandroid: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;@Overrideprotected 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>() {@Overridepublic void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {tvShow.setText(response.body().getTitle());}@Overridepublic void onFailure(Call<MovieEntity> call, Throwable t) {tvShow.setText(t.getMessage());}});

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

转载于:https://www.cnblogs.com/wjtaigwh/p/6025802.html

相关文章:

【Codeforces】920A Water The Garden(浇花)

http://codeforces.com/problemset/problem/920/A 给你花坛的数目&#xff0c;花坛都是连续的&#xff0c;某一些花坛里有水龙头&#xff0c;给出了这些有水龙头的位置 The garden from test 1. White colour denotes a garden bed without a tap, red colour — a garden be…

Work with Alexa :Echo匹配连接到Alexa

背景&#xff1a; 通过蓝牙可以让你的智能家居设备和Echo设备连接起来&#xff0c;从而达到Echo通过语音控制智能家居设备。 什么事Alexa Gadgets&#xff1f; 我的理解Alexa Gadgets是智能家居设备的一部分&#xff0c;包含硬件和软件。硬件&#xff1a;蓝牙模块&#xff1b;软…

Maven 学习Tips

2019独角兽企业重金招聘Python工程师标准>>> 使用 deploy 应该注意的地方 在项目的pom文件中增加如下节点&#xff1a;<project><distributionManagement><repository><id>releases</id><url>http://192.168.1.99:8081/nexus/c…

【Codeforces】1015B Obtaining the String(字符串 交换)

http://codeforces.com/contest/1015/problem/B n 表示 字符串的长度 然后是两个字符串&#xff0c;每一次只能交换相邻的两个&#xff0c;如果选择第i个字符的话&#xff0c;只能交换第i个和第i1个 然后输出每一次交换选定的位置 暴力&#xff0c;模拟&#xff0c;queue&am…

07 分支管理 —— Feature分支

2019独角兽企业重金招聘Python工程师标准>>> 07 分支管理 —— Feature分支 软件开发中&#xff0c;总有无穷无尽的新的功能要不断添加进来。添加一个新功能时&#xff0c;你肯定不希望因为一些实验性质的代码&#xff0c;把主分支搞乱了&#xff0c;所以&#xff0…

适用于0基础小伙伴的HTML知识点总结 先到先得哟

HTML基础知识点分享 前段时间一直忙于私下学习消化一些PHP中的知识体系&#xff0c;导致博客开通至今一直没发表相关技能贴。最近呢~博主夏天我正在进行前半段知识体系和框架的总结阶段。借此&#xff0c;抽空给大家分享一下私下自己学习时的一些心得体会以及知识体系&#xff…

SLAM小结——求解退化问题解析(F、H、E)(面试经验总结)

总结&#xff1a; 1 Essential Matrix E t ^ R 为3*3的矩阵&#xff0c;奇异值为 [ u, u, 0] ^ T 的形式。为本质矩阵的内在性质。 性质&#xff1a;理论上综合旋转、平移共有6个自由度&#xff0c;因尺度等价&#xff0c;E有5个自由度。 求解&#xff1a;一般使用…

【Codeforces】1065B Vasya and Isolated Vertices (无向图的)

http://codeforces.com/problemset/problem/1065/B 一个图&#xff0c;给定顶点数&#xff0c;边数&#xff0c;求解最小孤立点数和最大孤立点数 最小的话&#xff0c;一个边连接两个顶点成为一个整体&#xff0c;如果最后有多余的点&#xff0c;那些就是孤立的点 最大就是找…

这些资源网站为什么能获得5万知乎大佬推荐,而我错失了什么吗?

现在很多朋友可能只要是一听到资源网站&#xff0c;想必就会好奇是什么网站&#xff0c;用用看是不是由说的那么厉害&#xff01;其实资源网站给我们的诱惑是在是太大了&#xff0c;其主要原因是可以帮助我们搜索到很多意想不到的资源&#xff01; 为了回应大家的需求&#xff…

大话Redis进阶

2019独角兽企业重金招聘Python工程师标准>>> 使用Redis过程中&#xff0c;总是会遇到各种各样问题&#xff0c;这里进行问题的总结&#xff0c;作为Redis 进阶的经验分享。 更新缓存的问题 [主动]需要操作人员去操作&#xff0c;或者定时调度[被动]由用户触发更新[预…

SLAM精度测评——EVO

1.install GitHub - MichaelGrupp/evo: Python package for the evaluation of odometry and SLAM 注意&#xff1a;安装好依赖&#xff01; sudo apt install python-pip pip install evo --upgrade --no-binary evo or pip install evo --upgrade --no-binary evo --user…

【UVA】10152 ShellSort (几只乌龟的故事)

https://vjudge.net/problem/UVA-10152 题目大意&#xff1a; 输入N&#xff0c;给你N个乌龟的名字&#xff0c;下面N行是初始状态&#xff0c;在下面N行是最终状态&#xff0c;你选中这只乌龟以后&#xff0c;只能把它移动到最上面&#xff0c;问怎么样操作步数最少&#xf…

python2与python3转换记录

为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事&#xff0c;虽说Python3是未来&#xff0c;但是仍然有很多项目采用Python2开发。Linux的许多发行版本(如Ubuntu)都会自带Python2.7&#xff0c;但是当我们准备开发一个Python3项目的…

oracle读书笔记之Oracle 11g R2 DBA操作指南(前三章)

Oracle 11g R2 DBA操作指南是我学习的第一本讲述oracle数据库知识的书籍&#xff0c;在此记录下自己的学习笔记&#xff0c;对于书中的知识点本人通过实际操作进行验证。1.Oracle数据库基础1.1.关系数据库1.1.1.关系数据库模型1.关系数据库模型三个核心概念&#xff1a;关系、属…

【UVA】11991 Easy Problem from Rujia Liu? (整数v第k次出现在什么位置)

https://vjudge.net/problem/UVA-11991 题目大意&#xff1a;就是给你一个序列&#xff0c;然后给出k和v&#xff0c;看整数v第k次出现在该序列的什么位置&#xff0c;没有的话就输出0 结构体&#xff08;略复杂&#xff09;&#xff1a; #include <iostream> #include…

面试题:2018最全Redis面试题整理

1、什么是Redis?Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a;Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次…

Android5.0如何正确启用isLoggable(二) 理分析

转自&#xff1a;http://www.it165.net/pro/html/201506/43374.html 概要 在上文《Android 5.0 如何正确启用isLoggable(一)__使用详解》中分析了isLoggable的使用方法&#xff0c;本文主要分析isLoggable实现原理以及user版系统root后永久enable isLoggable的原理&#xff0c;…

SLAM精度测评——rpg_trajectory_evaluatio

1. install https://github.com/ccxslam/rpg_trajectory_evaluation#install 下载catkin_simple&#xff1a;https://github.com/catkin/catkin_simple 建立工作空间 src下载&#xff0c;编译&#xff0c;然后下载rpg_trajectory_evaluatio,编译安装即可。 &#xff12;&a…

STL set multiset

STL容器大的方向分为两类&#xff0c;序列式容器和关联式容器。 这两者通过数据在容器内的排列来区分。关联容器和顺序容器的根本不同在于&#xff1a;关联容器中的元素是按关键字来保存和访问的&#xff0c;而顺序容器中的元素则是按它们在容器中的位置来顺序保存和访问的。 …

Windows 消息循环(1) - 概览

本文从消息循环是如何驱动程序的这个角度&#xff0c;对 Windows 消息循环进行概览性介绍。 使用 EN5 课件获得更好的阅读体验&#xff1a; 【希沃白板5】课件分享 : 《Windows培训 - 消息循环》https://r302.cc/q2d1jB 点击链接直接预览课件 1 程序是怎么跑起来的&#xff1f;…

得到的旋转向量和平移向量转换成旋转矩阵 (SE(3))

理论过程 头文件说明 1.使用罗德里格斯公式需要包含头文件为#include<opencv2/calib3d.hpp> 2.使用函数cv2eigen需要包含头文件<opencv2/core/eigen.hpp>&#xff0c;但是在则之前要包含一个对eigen定义的头文件&#xff0c;否则会报eigen.hpp文件的错&#xff0c;…

[译稿]同步复制提议 2010-09

2019独角兽企业重金招聘Python工程师标准>>> 同步复制9/2010议案 目录 [隐藏] 1 PAGE状态 2 有何不同之处这个补丁&#xff1f; 3 同步复制概述 4 用户视角 4.1 管理员视角 5 实现 5.1 STANDBY 5.2 MASTER 6 CODE 7 性能分析 8 尚未实现 9 &#xff0c;其他问题 PAG…

STL vector

1、vector是表示可变大小数组的序列容器。 2、就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且它的大小会…

JavaScript 复习之数据类型

一、简介 JavaScript 的数据类型有 7 种&#xff1a; 数值&#xff08;number&#xff09;字符串&#xff08;string&#xff09;布尔值&#xff08;boolean&#xff09;undefinednull对象&#xff08;object&#xff09;Symbol&#xff08;ES6 中新增的类型&#xff0c;表示独…

Nginx反代配置

一、ngx_http_proxy_module模块ngx_http_proxy_module模块可根据用户请求的uri传递至后端服务器&#xff0c;实现反向代理命令&#xff1a;1.proxy_pass设置一个代理服务器的地址&#xff0c;协议&#xff0c;和一个可选的URI的位置应该映射。作为一个协议&#xff0c;“HTTP”…

STL queue priority_queue

queue 队列 queue 队列 就像排队一样&#xff0c;后来的排在后面&#xff0c;先来的先出队。所以只能对队首和队尾的元素进行操作 back()返回最后一个元素empty()如果队列空则返回真front()返回第一个元素pop()删除第一个元素push()在末尾加入一个元素size()返回队列中元素的…

镜头评价指标及测试方法(二)—畸变与分辨率

一、畸变 畸变&#xff08;distortion&#xff09;也称为失真&#xff0c;是由于光阑球差的影响&#xff0c;不同视场的主光线通过光学系统后与高斯像面的交点高度不等于理想像高&#xff0c;两者之差就是畸变。因此畸变只改变轴外物点在理想面上的成像位置&#xff0c;使像的形…

优秀Java程序员应该知道的20个实用开源库

一个优秀且经验丰富的Java开发人员的特点之一是对API的广泛了解&#xff0c;包括JDK和第三方库。我花了很多时间学习API&#xff0c;特别是在阅读Effective Java 3rd Edition之后&#xff0c;Joshua Bloch建议如何使用现有的API进行开发&#xff0c;而不是为常用的东西写新的代…

sersync 同步

Sersync数据同步rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync&#xff0c;远程同步支持本地复制&#xff0c;或者与其他SSH、rsync主机同步。它的特性如下&#xff1a;v 可以镜像保存整个目录树和文件系统。v 可以很容易做到保持原…

python-opencv 形态学

五、形态学运算 检测边和 角点 形态学算子检测图像中的边缘和拐角&#xff08;实际用&#xff1a;Canny或Harris等算法&#xff09; 5.1 检测边缘 形态学检测边缘的原理&#xff1a;在膨胀时&#xff0c;图像中的物体会想周围“扩张”&#xff1b;腐蚀时&#xff0c;图像中的物…