问题标签 [retrofit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 Retrofit 访问 JSON 数组
我以为我知道如何做到这一点,但显然不是。我有来自 Flickr 的 API,它的开头是这样的:
现在我需要获取的信息来自照片数组,所以我一直在尝试做的是:
很清楚我似乎没有抓住重点,但是我不确定如何获取信息..
java - 如何处理改造 RestAdapter.Builder() 异常?
我正在使用 Retrofit 连接到用户可配置的 URL,我遇到的问题是如何处理空白 URL。正如预期的那样,当服务器为空/空白时,RestAdapter.Builder 会引发 IllegalArgumentException,这意味着无法调用 create 来生成改造接口,从而使我得到一个空接口。
例如使用以下 API 接口;
我已经为 Retrofit 接口创建了一个包装类,因为回调类型是 Retrofit 回调,我希望能够在需要时将其换掉。
那么我应该如何处理 RestAdapter.Builder 抛出的异常呢?
在我看来,检查 settings.getUrl() 是否返回一个有效的 URL 似乎是明智的,如果确实如此,则使用 Retrofit 填充界面。但是当 URL 为空时如何处理这种情况,一种解决方案是检查 null,例如;
这可行,但我的 API 接口非常大,我宁愿不必在每次调用时检查 null。
例如,如果我可以将 mAPiService 设置为一个无效的实现,它会立即用一条消息调用失败,那就太好了;
但这是不可能的,因为 IApiService 接口使用 Retrofit Callback 接口,它需要一个失败参数 RetrofitError。
我列出的任何选项都可以吗?或者有没有更好的解决方案来处理无法生成界面的情况?
android - 如何使用 Retrofit 从异步回调中返回 String 或 JSONObject?
例如,调用
原因:
我想我必须禁用 gson 解析成 POJO,但不知道该怎么做。
android - 如何使用 Retrofit-Android 记录请求和响应正文?
我在 Retrofit API 中找不到用于记录完整请求/响应主体的相关方法。我期待 Profiler 提供一些帮助(但它只提供有关响应的元数据)。我尝试在 Builder 中设置日志级别,但这对我也没有帮助:
编辑:此代码现在正在运行。我不知道为什么它没有早点工作。可能是因为我使用了一些旧版本的改造。
java - 使用 Retrofit 读取 JSON
我有以下 JSON 提要:
我想要做的是获取集合的内容 - photo_id、所有者、标题和 URL。我有以下代码,但是我收到 GSON JSON 错误:
我认为我的代码对于获取 JSON 提要是正确的,但我不太确定。任何帮助表示赞赏。
我得到的错误是:
但是我很难理解如何使用 GSON 库
android - 什么时候应该使用 RxJava Observable,什么时候应该在 Android 上使用简单的 Callback?
我正在为我的应用程序建立网络。所以我决定试试 Square 的Retrofit。我看到他们支持简单Callback
和 RxJava 的Observable
乍一看,两者看起来非常相似,但是当它开始实施时,它变得很有趣......
虽然使用简单的回调实现看起来与此类似:
这非常简单明了。并且Observable
很快就会变得冗长且相当复杂。
事实并非如此。你仍然需要做这样的事情:
我在这里错过了什么吗?或者这是使用Observable
s 的错误案例?什么时候/应该更喜欢Observable
简单的回调?
更新
正如@Niels 在他的回答或 Jake Wharton 的示例项目U2020中所示,使用改造比上面的示例简单得多。但本质上问题是一样的——什么时候应该使用一种方式或另一种方式?
android - 如何使用 Retrofit 添加多个相同/数组参数?
我有一个实例,我需要将多个相同的命名参数传递给服务器(数据数组)。
改变它是不可能的。
我如何使用 RetroFit 完成此任务?我看到您可以传递值映射,但这无济于事,因为键都是相同的。
任何帮助都会很棒......真的希望有一个干净的方法/解决方法,否则我将需要使用另一个 api lib 并进行项目重构。
android - 无法使用 Retrofit 解析 JSON
我正在使用Retrofit来打一个 api。我需要同时获得 Json 和标头响应。所以我的接口方法是这样的。所以在响应类型对象中,我从response.getHeaders()
. 但是,当我尝试从中获取 json 响应时response.getBody()
,我没有得到正确的响应。我需要帮助来获取和解析来自 Response 对象的 json 响应:-(
android - Android Retrofit GET 请求 ConversionException 问题
我正在使用 Retrofit 发出 REST 请求并创建相应的模型对象(使用 gson 使用 @SerializedName 注释)。不过,有一个特殊的 GET 请求偶尔会导致 ConversionException,我无法追踪原因。我将几乎同时使用不同的参数发出 10-20 个类似的 GET 请求,其中大约 90% 的请求正确返回。其余的失败并出现 ConversionException:
retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列是 STRING
一旦发生此转换异常,每当我尝试再次发出该请求(不终止应用程序)时,它将始终具有相同的转换异常。如果我杀死该应用程序并重新开始,它可能会起作用。
我尝试在浏览器中查看具有此转换异常的请求的 json 响应,但它看起来总是正确的。我在“失败”请求和成功请求之间做了很多比较,json 看起来是一样的。
我的问题:
1)为什么会发生这些转换异常,据我所知,响应数据总是正确的?
2) 改造是否对 GET 请求进行任何类型的缓存?这可以解释为什么重新请求失败的请求会继续失败,直到我终止并重新启动应用程序。
谢谢!
android - 通过在改造中透明地发送另一个请求来处理特定错误
这是我要处理的情况,
- 如果执行了请求,并且响应表明身份验证令牌已过期,
- 发送刷新令牌请求
- 如果刷新令牌请求成功,则重试原始请求
这对调用的Activity、Fragment...等应该是透明的。从调用者的角度来看,这是一个请求,一个响应。
我之前在直接使用 OkHttpClient 时已经实现了这个流程,但是我不知道如何在 Retrofit 中实现这一点。
也许与这个关于 ResponseInterceptor 的公开问题有关?
如果在改造中没有直接的方法来实现这一点,那么实现它的最佳方法是什么?基础监听器类?
我也在使用带有 Retrofit 的 RoboSpice,如果它在这种情况下有用的话。