RxJAVA和Retrofit在安卓中网络请求使用实例

版权声明:此BLOG为个人维护BLOG,内容均来自原创及互连网转载。最终目的为收集整理自己需要的文章技术等内容,不涉及商业用途。 本BLOG上原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。 3、有关本站侵权   本BLOG所转载的内容,均是本人未发现有对文章版权声明的文章且无来自传统媒体。如果本BLOG侵犯了您的权益,请联系本人,本人将会在第一时间删除侵权文章 https://blog.csdn.net/qq_20221151/article/details/52161027

>  本博客内容一致同步到本人的博客站点:http://www.zhoutaotao.xyz 欢迎访问留言交流
package ClassSelf;
public class UserMessage {
    private String name;
    private String id;
    private String subscriptions_url;

    public String getSubscriptions_url() { return subscriptions_url;}
 public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public UserMessage(String name, String id, String subscriptions_url) {
        this.name = name;
        this.id = id;
        this.subscriptions_url = subscriptions_url;
    }
}


//服务
package Interface;

import ClassSelf.UserMessage;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;

public interface ServerInterface{
    @GET("/users/{user}")//定义一个GET注解
    Call<UserMessage> getUserMessage(@Path("user") String user);
}












MainActivity部分代码
Observable<UserMessage> observable=Observable.create(new Observable.OnSubscribe<UserMessage>() {//构造被观察者
    @Override
    public void call(final Subscriber<? super UserMessage> subscriber) {//里面是需要网络请求的方法体
        Retrofit retrofit=new Retrofit.Builder() .baseUrl(UrlMessage.BaseUrl).addConverterFactory(GsonConverterFactory.create()).build();
        ServerInterface serverInterface=retrofit.create(ServerInterface.class);
        Call<UserMessage> call=serverInterface.getUserMessage("badman");
        call.enqueue(new Callback<UserMessage>() {
            @Override
            public void onResponse(Call<UserMessage> call, Response<UserMessage> response) {
                final UserMessage user=response.body();
                title.setText("SUCCESS!");
                subscriber.onNext(user);//调用onNext事件
                subscriber.onCompleted();//调用完成事件
            }
            @Override
            public void onFailure(Call<UserMessage> call, Throwable t) {}
        });
    }
});
Subscriber<UserMessage> subscriber=new Subscriber<UserMessage>() {
    @Override
    public void onCompleted() {
        Log.e(">>>>>>>>>>>>>>>","OK");
    }

    @Override
    public void onError(Throwable e) {
        Log.e(">>>>>>>>>>>>>>>","Exception");
    }

    @Override
    public void onNext(UserMessage userMessage) {
        Log.e(">>>>>>>>>>>>>>>",userMessage.getSubscriptions_url());
    }
};
observable.subscribe(subscriber);

执行结果:
************************************************************************************
08-09 11:09:37.864 14871-14907/cn.edu.ahnu.getpicture W/System: ClassLoader referenced unknown path: /data/data/cn.edu.ahnu.getpicture/lib
08-09 11:09:40.553 14871-14871/cn.edu.ahnu.getpicture E/>>>>>>>>>>>>>>>: https://api.github.com/users/Badman/subscriptions
08-09 11:09:40.553 14871-14871/cn.edu.ahnu.getpicture E/>>>>>>>>>>>>>>>: OK
*************************************************************************************

注意别忘了,加上网络权限,

猜你喜欢

转载自blog.csdn.net/qq_20221151/article/details/52161027