问题标签 [retrofit2]
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.
android - com.squareup.okhttp.internal.framed.IncomingStreamHandler 的 ClassNotFoundException
我正在为一个使用反应式编程和改造的类编写单元测试用例。我收到以下异常:
这是我的改造类和经理类。
以下是我的单元测试用例:
最初谷歌搜索表明okio
应该包括库。即使在包含 `okio, library. 这是我的 gradle 文件。
编辑1:
当我运行以下命令时:
jar -tvf ~/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp/okhttp/2.5.0/4de2b4ed3445c37ec1720a7d214712e845a24636/okhttp-2.5.0.jar
我确实看到了罐子里的课程。
我仍然很困惑为什么即使它在 jar 文件中,单元测试也无法找到这个类。看起来这是 Jar 地狱问题。
EDIT2:这确实是 Jar 地狱问题。如果您注意到上面的 gradle 文件,我使用的是 2.7.1 版本,okhttp
但使用的是 2.5.0 版本mockwebser
。当我使用2.7.1
mockwebserver 版本时,问题已解决。
java - 不支持的操作:Android、Retrofit、OkHttp。在 OkHttpClient 中添加拦截器
我正在尝试使用拦截器在 Android 中通过 Retrofit 2.0-beta3 和 OkHttpClient 添加基于令牌的身份验证。但是当我在 OkHttpClient 中添加我的拦截器时,我得到了 UnsupportedOperationException。这是我的代码:在 ApiClient.java
我像这样使用它:
但我得到这个错误:
添加新拦截器时出错,说它不是 modifiableCollection 但拦截器()函数的文档说:/**
我究竟做错了什么?这可能是一个错误吗?
java - 改造 - MongoDB - 预期 BEGIN_ARRAY 但为 BEGIN_OBJECT
我正在尝试从 mongodb 接收一些数据。这是格式,我收到:
我正在使用改造来获得它。
我的结构如下所示:
当我运行代码时,我得到了异常:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $...
我知道我必须更改 PlantDBStructure,但我真的不知道怎么做。请帮忙。非常感谢!
php - 使用改造 2.0 上传多个文件
我目前正在开发应用程序的一部分,用户需要从图库中选择一些图像,然后将这些图像上传到服务器。对于上传,我使用的是使用 multipart 的改造 2.0。
按照资源https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server我只使用一个文件就成功实现了它,但是我希望在一个会话中所有图像用户选择上传到服务器。
环顾四周,我发现在一个多部分请求中附加了“改造”多个图像,它在 @partmap 注释上进行了讨论,这似乎是正确的匹配,但是我无法理解如何迭代我需要上传的图像?
有人可以指出我正确的实施吗?
还检查了: 1. Retrofit(2.0 beta2) 分段文件上传不起作用 2.上传与数组 Retrofit 2.0.0-beta2 同名的多个图像
android - 将改造 2 中的常用路径参数替换为 okhttp
我有一些具有相同 baseUrl 的服务 url。对于某些 url,会有一些常用的参数,例如 an apiVersion
or locale
。但它们不必在每个 url 中,所以我不能将它们添加到 baseUrl。
我不想在改造界面中添加这些参数。在改造 1 中,我做了一个拦截器,用于RequestFacade.addPathParam(..., ...)
为每个 url 填充这些公共路径参数。
对于改造 2,我似乎找不到使用 okhttp 执行此操作的正确方法。我现在看到这可能的唯一方法是HttpUrl
从Chain.request().httpUrl();
okhttp 中获取Interceptor
并自己操作那个,但我不知道这是否是最好的方法。
有没有人遇到过更好的方法来替换 okhttp 中的路径参数Interceptor
?
在撰写本文时,我使用的是 retrofit:2.0.0-beta2 和 okhttp:2.7.2。
android - Retrofit2 中每个 api 的拦截器
我有四种不同的 api,每一种都有自己的标头。我尝试使用拦截器机制来填充标头,而不是为每个调用提供相同的标头,但是由于 OkHttp 拦截器为每个请求运行,我无法为每个 api 创建一个拦截器。
我在 Retrofit2 中没有找到任何其他机制可以让我避免为每个请求编写相同的标头。
什么是给一堆电话相同的标题的好方法?
android - 在启动画面中使用 Retrofit 调用 API
我对 android 开发很陌生,现在我有一个应用程序,它使用 Retrofit 和 RxJava 从 Rest Api 调用相当大的记录,并在加载初始屏幕期间将其保存到本地数据库。加载和完成启动画面需要超过 5 分钟,这对于用户体验来说非常烦人。有没有人有任何想法在加载启动画面之前的任何时候调用 Rest Api?在主屏幕上需要保存在本地数据库中的一些数据。
android - 如何使用 Retrofit 使用查询字符串参数发出请求?
我有一个带有这样 URL 的 api 方法:http ://api.website.com/app.php?action=SOMETHING&id=SOME_NUMBER
我对每个请求唯一更改的部分是 id 查询字符串,替换 SOME_NUMBER(例如:http ://api.website.com/app.php?action=SOMETHING&id=556 )。
我正在创建这样的服务:
我使用工厂类返回服务的实例:
但是,请求似乎忽略了 @Query 参数。这有什么问题?
java - How to mock services with Retrofit 2.0 and the new MockRetrofit class?
Using Retrofit 1 we used to mock web services and simulate network latency as following:
Where MyService
is the service Interface (returning responses as Rx Observables), and MyServiceMock
is a class that implements this interface.
In Retrofit 2.0.0-beta3 there is a brand new mocking system (see: https://github.com/square/retrofit/pull/1343) that is not yet documented. When trying to to something similar I get:
How do I forward calls to MyServiceMock
?
android - 创建多个具有相同连接池的 OkHttp3 客户端
我正在使用 Retrofit2。我可以创建几个 OkHttp3 客户端并与其他客户端共享第一个实例的连接池吗?它是线程安全和良好的做法吗?