当前位置: 首页 > 知识库问答 >
问题:

使用rxjava改装时添加响应回调

霍永年
2023-03-14

我正在使用Rxjava进行改装,以获得API的响应,因为您可以看到我使用的方法,我看不到响应中会出现什么,当然我不需要,因为我提供了GsonConverter进行改装,但出于某些调试原因,我需要看到来自API的响应。我怎样才能做到这一点,我需要添加什么代码。

public interface ProductApiService
{
    String END_POINT = "http://beta.site.com/index.php/restmob/";

    @GET(Url.URL_PRODUCT_API)
    Observable<Product> getProducts(@Query("some_id") String cid);

    class Creator
    {
        public static ProductApiService getProductAPIService() {
            Gson gson = new GsonBuilder()
                    .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
                    .create();
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(ProductApiService.END_POINT)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .build();

            return retrofit.create(ProductApiService.class);
        }
    }
}

共有2个答案

许法
2023-03-14

Daniel Lew的方法很快,包含的锅炉板代码最少。然而,这可能会迫使您重构您的网络逻辑。由于您提到出于调试目的需要这样做,也许将配置好的OkHttpClient与拦截器一起使用是一种干扰较小的策略。

OkHttpClient httpClient = new OkHttpClient.Builder()
    .addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request req = chain.request();
            Response resp = chain.proceed(req);
            // ... do something with response
            return resp;
        }
    })
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .client(httpClient)
    .baseUrl(ProductApiService.END_POINT)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
    .build();
席弘图
2023-03-14

您只能从Retrofit 2开始执行此操作:将返回类型更改为包含响应

@GET(Url.URL_PRODUCT_API)
Observable<Response<Product>> getProducts(/* ...etc... */);

您也可以使用可观察

 类似资料:
  • 我用改型/rxJava调用我的API,得到了一个可观察的响应,就像一个BreedDog列表 ...你可以看到我的代码: 这是可行的,但是现在,对于列表中的每一项,我都需要调用API来获取URL图像并更新列表。。但我不知道怎么。。。我试着在Observable中更改我的单个响应,并使用了flatMap或flatMapIterate之类的运算符。。等等,但每次我都会在对象上出错。。没有一个例子。。。等

  • 有没有一种方法来捕获400到599超文本传输协议状态在onFail()方法通过使用改造2.0?每当其他api返回400,401等,然后改型像200响应,并在on成功()上处理它。我怎样才能实现呢?

  • HI我只是新来的改造服务,并遵循本教程https://www.simplifiedcoding.net/retrofit-android-tutorial-to-get-json-from-server/它工作得很好,想创建我自己的,所以我使用了一个新的json网络http://api.androidhive.info/contacts/,其中包含 我实现了自己的接口ContactAPI。Java

  • 改装版本:2.1.0 OkHttp版本:3.4.1 在我的Retromet实现的方法中,我有以下逻辑: 这里的是我自己的类型(与OkHttp的无关),它包装了一个泛型,其中是一个接口,它公开了一个方法,用于确认反序列化的响应满足给定的约束。 如果我收到一个表面上成功的响应(HTTP代码2XX、非空响应主体等)。),但其反序列化的主体没有通过此验证步骤(即返回false),我想呈现一个对话框,其消息

  • 我正在建立一个新的android项目并使用改版,我的改版功能在模拟器(NOX)和邮递员中正常工作,但是当我尝试在移动设备中构建我的应用程序时,改版总是陷入失败,有人能给我解决方案吗?我的API发布在公共主机上, 这就是我所说的改装 我的回应 这是我的邮差回复

  • API接口 在我的MVP节目中 这些是我的改造和rxjava代码,我应该发布一封电子邮件和密码来注册用户。服务器应该在成功时返回一个字符串,在失败时也返回一个字符串。 我添加了gson setLenient代码部分,因为它给了我错误,如果我没有它。添加此后,我得到了错误,我不知道如何解决它。这是因为来自服务器的返回响应是一个字符串吗? 提前谢谢。