首先使用SpringBoot创建一个简单的SpringMVC工程。

@RestControllerpublic class RetrofitController {    @RequestMapping("/users/{user}")    public User getUser(@PathVariable("user") String u){        System.out.println("user = " + u);        User user = new User();        user.setUsername("test");        user.setEmail(("test@qq.com"));        return user;    }}

public class User {    private String username;    private String email;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }}

服务端运行在8000端口。


通过Android Studio创建一个Android工程。

在AndroidManifest.xml添加

<uses-permission android:name="android.permission.INTERNET"/>

在build.gradle添加发下代码,使用Retrofit2.2.0, RxJava2.0.7, RxAndroid2.0, 1, gson 2.8.0

compile 'com.squareup.retrofit2:retrofit:2.2.0'compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'//compile 'com.squareup.retrofit2:converter-jackson:2.2.0'compile 'com.squareup.retrofit2:converter-gson:2.2.0'compile 'com.google.code.gson:gson:2.8.0'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.7'

定义UserService

public interface UserService {    @GET("/users/{user}")    Flowable getUser(@Path("user") String user);}

测试代码

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 只是例子,没有采用注解方案        //后续可以添加token处理, cache处理, 请求拦截等功能        tvResponse = (TextView) findViewById(R.id.tvResponse);        btnRequest = (Button) findViewById(R.id.btnTest);        btnRequest.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Log.d(TAG, "test");                Retrofit retrofit = new Retrofit.Builder()                        .baseUrl("http://10.0.0.16:8000/")                        .addConverterFactory(GsonConverterFactory.create())                        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())                        .build();                UserService userService = retrofit.create(UserService.class);                userService.getUser("chenhaifeng2016")                        .subscribeOn(Schedulers.io())                        .observeOn(AndroidSchedulers.mainThread())                        .subscribe(new Subscriber() {                            @Override                            public void onSubscribe(Subscription s) {                                s.request(Long.MAX_VALUE);                            }                            @Override                            public void onNext(User user) {                                Log.d(TAG, "成功");                                Log.d(TAG, "response=" + user.getUsername());                            }                            @Override                            public void onError(Throwable t) {                                Log.d(TAG, "出错");                            }                            @Override                            public void onComplete() {                                Log.d(TAG, "完成");                            }                        });            }        });


运行效果

03-16 21:14:15.283 312-312/cssweb.com.retrofit2demo D/MainActivity: test
03-16 21:14:15.313 312-312/cssweb.com.retrofit2demo D/MainActivity: 成功
03-16 21:14:15.313 312-312/cssweb.com.retrofit2demo D/MainActivity: response=test
03-16 21:14:15.313 312-312/cssweb.com.retrofit2demo D/MainActivity: 完成


完整工程源代码

https://github.com/chenhaifeng2016/Retrofit2Demo


更多相关文章

  1. android 代码设置apn
  2. Android 通过代码执行Linux 命令 echo 命令
  3. android 反编译和代码解读
  4. 第一行代码 Android
  5. android对话框代码中设置背景为透明
  6. android取得手机屏幕大小DisplayMetrics的核心代码
  7. Android代码分析
  8. Android源代码在线浏览网站列表
  9. android代码编写布局和控件

随机推荐

  1. Android 实现旋转键盘的例子
  2. Android实现CoverFlow效果三
  3. android 中对xml 进行解析
  4. Android 平台如何获取程序的版本
  5. Android实现自动定位城市并获取天气信息
  6. Android SDK Tools 19出了
  7. Android之Widget
  8. Android文件读写包含SDCard
  9. Android Notes 04 - Intents and Intent
  10. android 禁止输入特殊字符