草庐IT

Retrofit

全部标签

android - Retrofit2 - 全局检查响应代码

我正在使用Retrofit2向服务器发出请求。问题是:有时服务器会为用户的每个请求返回代码401。如果用户得到这个代码,他应该立即被踢出应用程序(注销并且在重新登录之前不能做任何事情)。因此对于发送到服务器的每个请求,我想检查服务器是否响应此代码。在所有的请求调用中写这个检查并不漂亮,所以我只想写一个检查,每次用户发出请求时它都会执行! 最佳答案 Retrofit(当前版本)需要一个HTTP客户端来发出请求。OkHttplibrary由同一开发人员作为默认客户端与Retrofitbundle在一起。OkHttp支持在客户端添加Int

android - 使用 SQLBrite + Retrofit 刷新数据

这是我的用例:我正在开发一个应用程序,它通过RESTAPI与服务器通信,并将接收到的数据存储在SQLite数据库中(将其用作某种缓存)。当用户打开屏幕时,必须发生以下情况:数据从数据库加载(如果可用)。应用程序调用API来刷新数据。API调用的结果保存到数据库中。当拦截到数据更改通知时,从数据库重新加载数据。这与呈现的案例非常相似here,但还是有细微差别的。因为我使用的是SQLBrite,DBobservables不会终止(因为那里注册了一个ContentObserver,它将新数据推送到流中),所以像concat这样的方法,merge等将不起作用。目前,我已经使用以下方法解决了这个

java - API 声明必须是接口(interface) - Retrofit

我正在尝试使用Retrofit进行简单的获取响应。我有错误java.lang.IllegalArgumentException:APIdeclarationsmustbeinterfaces.。我无法弄清楚到底是什么问题。当我尝试执行CategoryJsonParsercategoryParsed=retrofit.create(CategoryJsonParser.class);时出现此错误。所以这是我的界面:publicinterfaceInterfaceForCategory{@GET("categories?api_key=l6pdqjuf7hdf97h1yvzadfce")C

android - 使用 Retrofit 进行连续的 api 调用并返回 observable

我有一个包含以下接口(interface)的改造服务publicinterfaceApiService{@GET("/users/me")ObservableauthenticateUser(@Header("Authorization")Stringauth);@GET("/membership/{userId}")SubscriptionStatusgetSubscriptionStatus(@Path("userId")StringuserId);}我想定义一个方法来进行api调用以获取包含userId的帐户,然后使用此ID进行第二个API调用以获取用户订阅状态。Subscrip

android - 格式化 Rails API 的 RetroFit post 请求

全部,我第一次开始使用RetroFit,它非常棒。也就是说,我在格式化POST请求时遇到了障碍。我使用的API指定要创建用户,我需要像这样发送用户对象:{"user":{"first_name":"John","last_name":"Doe","email":"john@doe.com","password":"jigglypuff123","password_confirmation":"jigglypuff123"}}我知道我可以用这种形式发送一个JsonObject,但我更想利用RetroFit。如果我传入一个User对象,它不会被包含在user中。只是{"first_name

java - 如何使用 Retrofit2 下载文件?

如何使用Retrofit2从我的PHP服务器下载文件(图像/视频)?我无法在网上找到任何有关如何继续的资源或教程;我找到了thispost处理SO上的某个下载错误,但我不是很清楚。谁能指出我正确的方向?更新:这是我的代码:文件下载服务.javapublicinterfaceFileDownloadService{@GET(Constants.UPLOADS_DIRECTORY+"/{filename}")@StreamingCalldownloadRetrofit(@Path("filename")StringfileName);}MainActivity.java(@Blackbel

android - Retrofit 2 RxJava - Gson - "Global"反序列化,改变响应类型

我使用的API总是返回如下所示的JSON对象:publicclassApiResponse{publicbooleansuccess;publicTdata;}data字段是一个JSON对象,包含所有有值(value)的信息。当然对于不同的要求是不同的。所以我的改造界面是这样的:@GET(...)Observable>getUser();当我想处理响应时,我需要做例如:response.getData().getUserId();我真的不需要那个booleansuccess字段,我想省略它,这样我的改造界面看起来像这样:@GET(...)ObservablegetUser();在Gso

android - Retrofit 中的@Query 和@path 有什么区别?

我想使用retrofit库通过传递一些参数来解析和发布数据。但是有时在定义模型类时我们会在变量前面使用@Serialized,那个Serialized的用途是什么。@Get和@Query在将参数传递给API时有什么区别。任何人都可以解释一下区别。 最佳答案 假设你有api方法@GET("/api/item/{id}/subitem/")所以通过使用@Path("id")您可以为路径中的项目指定id。但是,您的api可能会在查询中采用其他参数,例如排序、上次更新时间、限制等,因此您可以通过@Query(value="sort")Str

android - Retrofit 2 - 是否可以获得我发送和接收的 JSON 的大小?

我需要在我的Android应用程序上构建一个流量监视器,并且我需要存储我通过改造发送和接收的所有json的大小。使用日志我可以看到它的实际大小,但我还没有找到获取此信息的方法以便保存它。我也无法获得response.raw,因为它已经被解析到我的类中。有什么办法可以实现吗?编辑:将vadkou答案标记为最佳答案。我没有创建新的拦截器,而是传递了lamda表达式:httpClient.addInterceptor(chain->{okhttp3.Requestrequest=chain.request();okhttp3.Responseresponse=chain.proceed(re

android - 带有 retrofit-beta2 和 rxjava 的 NetworkOnMainThreadException

我最近从retroft-beta1升级,这很有效。我有以下API接口(interface):publicinterfaceService{@POST("path")Observableservice();}以及以下调用:service.service().observeOn(AndroidSchedulers.mainThread()).subscribe();它抛出一个NetworkOnMainThreadException。但这在retrofit-beta1中有效。 最佳答案 从retrofit-beta2,调用Observab