问题标签 [moya]

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.

0 投票
0 回答
640 浏览

ios - 使用 observeOn 和 subscribeOn 解决我的应用程序冻结问题

我遇到很多用户抱怨他们的应用程序冻结,我怀疑这是由于网络请求。

很难重现,但我的解决方案是在我的自定义 mapArray 函数中添加 subscribeOn 和 observeOn,该函数链接在 moya 请求之后但在任何 ui 使用之前。

问题:

  • 这种调用 subscribeOn 和 observeOn 的顺序作为解决冻结问题的方法是否有意义?
  • 在调用函数之后调用 subscribeOn 感觉很奇怪,但我不想将我的请求包装在另一个调度块中

总的来说,我对 Moya 和 Alamofire 中的线程切换感到很困惑,希望有人能发光:

PS:我已经阅读了moya中讨论这个的问题,它提到alamofire在主线程上进行网络调用,这也让我感到困惑

PS2:这个解决方案也是基于这篇文,但我的问题是,除了上述问题之外,为什么它可能提倡在后台线程上运行网络调用,而对于 Moya 家伙来说似乎并非如此。

0 投票
2 回答
1599 浏览

swift - 无法上传文件 RXSwift Moya 多部分

我正在使用 Moya 处理我的 swift 应用程序和 api 之间的通信,我能够发布和获取数据但无法将文件发布到 api 服务器,以下是我的代码

以下是我打电话的方式

我没有收到任何响应,也没有向 api 服务器发送任何命中

0 投票
4 回答
7888 浏览

ios - 如何使用 Moya pod 为请求设置超时?

我正在使用 Swift 3 和Moya pod。

我使用Basic Usage配置了我需要的一切,但我没有找到任何可以设置超时的函数或变量(对于每个请求或特定请求)。

我怎样才能做到这一点?

0 投票
1 回答
1159 浏览

swift - 如何正确过滤 RxMoya 中的SuccessfulStatusCodes

我正在使用 RxMoya,我想知道 fiterSuccesfulStatusCodes 的用法,我将尝试描述我的问题是什么......所以当你使用这样的网络调用时

当您收到状态码高于 299 的响应时,什么都不会发生,我的问题是我想向用户显示错误消息,但是当您检查 filterSuccessfulStatusCodes 的作用时:

现在我们越来越接近我遇到的问题了。所以 filterSuccessfulStatusCodes 的实现使用了 Moya.Resposne 的公共实例函数和这个实现:

正如你所看到的,这个东西会抛出异常......但是上面的函数,它不会重新抛出,它返回的是泛型 E 的 Observable。

我的第一个问题,当函数不抛出/重新抛出时,你为什么可以使用 return Observable.just(try response.filterSuccessfulStatusCodes())。你可以在没有做/chatch 的情况下使用 try?(我知道用 try!/try?你可以,但用 try,我只能想象 rethrow 的情况)。

第二个问题,它有一种方法可以在可观察的级别上对错误状态代码做出反应。

谢谢

0 投票
1 回答
207 浏览

swift - 在 POST 之前从 OAuthSwift 中删除标头

我正在使用 OAuthSwiftAlamofire,它采用 OAuthSwift 并添加了一个插入 AlamoFire 的 SessionManager。最重要的是,我正在使用 Moya 进行通话。一切正常,除了 OAuthSwift 正在注入

这会导致 Twitter API 返回

我修改了 MoyaendpointClosure以将“Content-Type”标头设置为 nil,但这并没有实现。

有人知道如何在使用 Moya->Alamofire->OAuthSwiftAlamofire->OAuthSwift 发送请求之前删除此标头吗?

0 投票
1 回答
171 浏览

ios - 使所有端点等待一个确切的端点

我正在使用Moya处理 HTTP 操作,通常我有一个refreshToken(). 当请求即将发生时,我正在检查令牌是否过期,但问题是可能存在多个请求的场景。如果它们与嵌套类型链接,则不是问题,但并非总是如此。

更清楚地说,假设我有request1()并且request2()假设它们执行单独的操作并且可以随时触发(例如,一个在 aviewDidLoad()中调用,另一个在 another 中调用viewDidLoad())。当发生这种情况并且令牌过期时,我的刷新请求将失败。(statusCode: 400)所以,我的问题是,我怎样才能让提供者等待refresh()操作完成?我的意思是提供者是其他端点。refresh()如果它打开,我希望他们等待端点。

如果您提出一种使这更容易的方法,我将不胜感激。

0 投票
1 回答
5979 浏览

swift - 无法转换类型 '(_) -> Observable 的值' 到预期的参数类型 '([_]) -> _'

我遇到了以下错误:

当我尝试编译时:

actualRequest 的类型Observable<Response> 为 CSRFTokenRequest 和 OAuthTokenRequest 的类型均为Observable<String?>

我试图在OAuthTokenRequest之前运行CSRFTokenRequest,然后是实际请求。

以下解决了这个问题......但我不确定这是否是正确的方法......

谢谢!

0 投票
1 回答
1116 浏览

swift - Rxswift + Moya + Realm

好的,让我们先解释一下我的目标。我正在尝试构建一个结构来从 Moya 获取项目并使用领域对象正确映射我的项目,以便将来保存它们。为了获得相关的反应性,所有这些都应该使用 rxswift 完成。

这是我的 2 节课:

这是一个用于获取和解析我的数据的示例结构。这是 RxMoya 提供的示例。但是为了使用 ObjectMapper 我不能使用mapObjectOptionnal方法。mapObjectOptionnal我尝试将模型切换到ModelMapper ,但找不到将数组转换为 List 的方法要求。

任何对我研究进展的帮助将不胜感激!!谢谢。

0 投票
1 回答
2879 浏览

swift - 只能从运行循环中添加通知块

我在这部分代码上有一些崩溃:

我认为问题在于我不在MainScheduler.instancerxRealm 上,main thread但我不想要它。有可能修复它吗?

fetchTrainRx

0 投票
1 回答
5338 浏览

ios - 从 Moya 响应中获取响应

我正在使用 RxSwift 和 Moya 来调用请求并获得响应。

我的代码:

它显示了这样的内容:

[“Moya_Logger:[03/01/2017 16:52:50] 请求: http ://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA51920AFD40-&6=6AD28 "] ["Moya_Logger: [03/01/2017 16:52:50] 请求标头:[:]"] ["Moya_Logger: [03/01/2017 16:52:50] HTTP 请求方法:GET"] [ “Moya_Logger:[03/01/2017 16:52:50] 响应:{ URL: http ://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA1DAD820A&-5C221-64 =2 } { 状态码:200,标头 {\n \"Access-Control-Allow-Origin\" = \"*\";\n \"Content-Length\" = 53;\n \"Content-Type\" = \"application/json; charset=utf-8\";\n 日期 = \"2017 年 1 月 3 日星期二 09:52:50 GMT\";\n 服务器 = \"Jetty(9.2.z-SNAPSHOT)\ ";\n
\"X-Server\" = 360Live;\n} }"] ["{\"error\":0,\"message\":\"交换胡萝卜值无效\"}"]

我想从这一行检测错误:

["{\"error\":0,\"message\":\"交换胡萝卜值无效\"}"]

当我 poresponse.element?.response?.description时,它只会给我:

▿ 可选 - some : " { URL: http://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA51920A-5C21-41D8-A420-62AF6AAD20FD&平台 {} \n \"Access-Control-Allow-Origin\" = \"*\";\n \"Content-Length\" = 53;\n \"Content-Type\" = \"application/json; charset=utf-8\";\n 日期 = \"2017 年 1 月 3 日星期二 09:52:50 GMT\";\n 服务器 = \"Jetty(9.2.z-SNAPSHOT)\";\n
\"X -服务器\" = 360Live;\n} }"