Android Retrofit框架的简单应用
2016-09-07 02:03
429 查看
Retrofit:Square提供的开源产品,为Android平台的应用提供一个类型安全的REST客户端
[html] view
plain copy
https://github.com/square/retrofit
RxAndroid:响应式编程框架RxJava针对Android平台的扩展。
[html] view
plain copy
https://github.com/ReactiveX/RxAndroid https://github.com/ReactiveX/RxJava
Dagger2:依赖注入(或叫ioc,用过Spring的都知道这东东)框架,用于解耦的。
[html] view
plain copy
https://github.com/google/dagger/
通过
[html] view
plain copy
http://ip.taobao.com/service/getIpInfo.php?ip=218.19.99.83
获得json数据
在app的gradle中加入依赖包
在AndroidManifest.xml加入网络访问权限
编写API服务
定义接受数据的类
GetIpInfoResponse
IpInfo
activity_main.xml
MainActivity.java
[html] view
plain copy
https://github.com/square/retrofit
RxAndroid:响应式编程框架RxJava针对Android平台的扩展。
[html] view
plain copy
https://github.com/ReactiveX/RxAndroid https://github.com/ReactiveX/RxJava
Dagger2:依赖注入(或叫ioc,用过Spring的都知道这东东)框架,用于解耦的。
[html] view
plain copy
https://github.com/google/dagger/
通过
[html] view
plain copy
http://ip.taobao.com/service/getIpInfo.php?ip=218.19.99.83
获得json数据
在app的gradle中加入依赖包
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包 compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包 compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
在AndroidManifest.xml加入网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
编写API服务
package com.example.xyz.retrofit.Response; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Query; /** * Created by xyz on 2016/9/5. */ public interface ApiService { @GET("service/getIpInfo.php")//请求目录 Call<GetIpInfoResponse>//回调、传入 getIpInfo(@Query("ip") String ip);//url传值key和value }
定义接受数据的类
GetIpInfoResponse
package com.example.xyz.retrofit.Response; import com.example.xyz.retrofit.model.IpInfo; /** * Created by xyz on 2016/9/5. */ public class GetIpInfoResponse { public int code; public IpInfo data; }
IpInfo
package com.example.xyz.retrofit.model; /** * Created by xyz on 2016/9/6. */ public class IpInfo { public String country; public String Country_id; public String area; public String area_id; public String ip; public String city; public String isp; }
activity_main.xml
<?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.example.xyz.retrofit.MainActivity"> <Button android:id="@+id/b1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tx1" android:layout_below="@id/b1" android:text="" /> </RelativeLayout>
MainActivity.java
package com.example.xyz.retrofit; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.example.xyz.retrofit.Response.ApiService; import com.example.xyz.retrofit.Response.GetIpInfoResponse; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class MainActivity extends AppCompatActivity { private Button b1; private TextView tx1; private String enpoint="http://ip.taobao.com"; private String ip="218.19.99.83"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button) findViewById(R.id.b1); tx1=(TextView) findViewById(R.id.tx1); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Retrofit retrofit=new Retrofit.Builder()//实例化retrofit .baseUrl(enpoint) .addConverterFactory(GsonConverterFactory.create())//读取GSON .build(); ApiService apiService=retrofit.create(ApiService.class);//指定retrofit的api服务 Call<GetIpInfoResponse> call=apiService.getIpInfo(ip); call.enqueue(new Callback<GetIpInfoResponse>() { @Override public void onResponse(Call<GetIpInfoResponse> call, Response<GetIpInfoResponse> response) { GetIpInfoResponse getIpInfoResponse=response.body();//将GSON数据写入GetIpInfoResponse tx1.setText(getIpInfoResponse.data.country); tx1.append(","); tx1.append(getIpInfoResponse.data.area); tx1.append(","); tx1.append(getIpInfoResponse.data.city); tx1.append(","); tx1.append(getIpInfoResponse.data.isp); tx1.append(",code="+getIpInfoResponse.code); } @Override public void onFailure(Call<GetIpInfoResponse> call, Throwable t) { Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_SHORT).show(); } }); } }); } }
相关文章推荐
- Android框架:Retrofit2之第一集简单应用
- 简略分析Android的Retrofit应用开发框架源码
- Android Http 标准框架,底层 OkHttp,与 RxJava 完美结合,比 Retrofit 更简单易用。
- android快捷开发之Retrofit网络加载框架的简单使用
- Android中网络框架Retrofit2.0简单使用
- Android 框架设计Demo,一个简单的MVP示例搜索功能,网络请求用Retrofit+RxJava实现
- Android-Universal-Image-Loader-master 框架简单应用
- android 开源框架 Retrofit的简单使用
- 一个简单的Android应用框架图
- Android 网络访问框架retrofit2,okhttp3之简单封装,kotlin源码
- 【MVP+Retrofit+RxAndroid+dagger2】读易读应用框架笔记(二)网络请求与回调篇
- Android搭建应用框架系列之Retrofit封装
- 【MVP+retrofit+rxAndroid+dagger2】读易读应用框架笔记(三)完结篇
- Android 当前比较新的框架组合,Retrofit,OKHttp,RXJava的一些简单使用
- Retrofit 2.0 + RxJava 2.0搭建简单的Android请求框架。
- ActiveAndroid数据库框架简单应用和配置
- android快捷开发之Retrofit网络加载框架的简单使用
- 【MVP+Retrofit+RxAndroid+dagger2】读易读应用框架笔记(一)MVP应用篇
- afinal - afinal 是一个android的 orm 和 ioc 框架。通过afinal的finalAcitivity,finalBitmap,finalDB,finalHttp,开发android应用将更加简单。 - Google Project Hosting
- Android简单应用的开发