问题标签 [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.
ios - 使用 observeOn 和 subscribeOn 解决我的应用程序冻结问题
我遇到很多用户抱怨他们的应用程序冻结,我怀疑这是由于网络请求。
很难重现,但我的解决方案是在我的自定义 mapArray 函数中添加 subscribeOn 和 observeOn,该函数链接在 moya 请求之后但在任何 ui 使用之前。
问题:
- 这种调用 subscribeOn 和 observeOn 的顺序作为解决冻结问题的方法是否有意义?
- 在调用函数之后调用 subscribeOn 感觉很奇怪,但我不想将我的请求包装在另一个调度块中
总的来说,我对 Moya 和 Alamofire 中的线程切换感到很困惑,希望有人能发光:
PS:我已经阅读了moya中讨论这个的问题,它提到alamofire在主线程上进行网络调用,这也让我感到困惑
PS2:这个解决方案也是基于这篇博文,但我的问题是,除了上述问题之外,为什么它可能提倡在后台线程上运行网络调用,而对于 Moya 家伙来说似乎并非如此。
swift - 无法上传文件 RXSwift Moya 多部分
我正在使用 Moya 处理我的 swift 应用程序和 api 之间的通信,我能够发布和获取数据但无法将文件发布到 api 服务器,以下是我的代码
以下是我打电话的方式
我没有收到任何响应,也没有向 api 服务器发送任何命中
swift - 如何正确过滤 RxMoya 中的SuccessfulStatusCodes
我正在使用 RxMoya,我想知道 fiterSuccesfulStatusCodes 的用法,我将尝试描述我的问题是什么......所以当你使用这样的网络调用时
当您收到状态码高于 299 的响应时,什么都不会发生,我的问题是我想向用户显示错误消息,但是当您检查 filterSuccessfulStatusCodes 的作用时:
现在我们越来越接近我遇到的问题了。所以 filterSuccessfulStatusCodes 的实现使用了 Moya.Resposne 的公共实例函数和这个实现:
正如你所看到的,这个东西会抛出异常......但是上面的函数,它不会重新抛出,它返回的是泛型 E 的 Observable。
我的第一个问题,当函数不抛出/重新抛出时,你为什么可以使用 return Observable.just(try response.filterSuccessfulStatusCodes())。你可以在没有做/chatch 的情况下使用 try?(我知道用 try!/try?你可以,但用 try,我只能想象 rethrow 的情况)。
第二个问题,它有一种方法可以在可观察的级别上对错误状态代码做出反应。
谢谢
swift - 在 POST 之前从 OAuthSwift 中删除标头
我正在使用 OAuthSwiftAlamofire,它采用 OAuthSwift 并添加了一个插入 AlamoFire 的 SessionManager。最重要的是,我正在使用 Moya 进行通话。一切正常,除了 OAuthSwift 正在注入
这会导致 Twitter API 返回
我修改了 MoyaendpointClosure
以将“Content-Type”标头设置为 nil,但这并没有实现。
有人知道如何在使用 Moya->Alamofire->OAuthSwiftAlamofire->OAuthSwift 发送请求之前删除此标头吗?
ios - 使所有端点等待一个确切的端点
我正在使用Moya处理 HTTP 操作,通常我有一个refreshToken()
. 当请求即将发生时,我正在检查令牌是否过期,但问题是可能存在多个请求的场景。如果它们与嵌套类型链接,则不是问题,但并非总是如此。
更清楚地说,假设我有request1()
并且request2()
假设它们执行单独的操作并且可以随时触发(例如,一个在 aviewDidLoad()
中调用,另一个在 another 中调用viewDidLoad()
)。当发生这种情况并且令牌过期时,我的刷新请求将失败。(statusCode: 400)
所以,我的问题是,我怎样才能让提供者等待refresh()
操作完成?我的意思是提供者是其他端点。refresh()
如果它打开,我希望他们等待端点。
如果您提出一种使这更容易的方法,我将不胜感激。
swift - 无法转换类型 '(_) -> Observable 的值' 到预期的参数类型 '([_]) -> _'
我遇到了以下错误:
当我尝试编译时:
actualRequest 的类型Observable<Response>
为 CSRFTokenRequest 和 OAuthTokenRequest 的类型均为Observable<String?>
我试图在OAuthTokenRequest之前运行CSRFTokenRequest,然后是实际请求。
以下解决了这个问题......但我不确定这是否是正确的方法......
谢谢!
swift - Rxswift + Moya + Realm
好的,让我们先解释一下我的目标。我正在尝试构建一个结构来从 Moya 获取项目并使用领域对象正确映射我的项目,以便将来保存它们。为了获得相关的反应性,所有这些都应该使用 rxswift 完成。
这是我的 2 节课:
这是一个用于获取和解析我的数据的示例结构。这是 RxMoya 提供的示例。但是为了使用 ObjectMapper 我不能使用mapObjectOptionnal
方法。mapObjectOptionnal
我尝试将模型切换到ModelMapper ,但找不到将数组转换为 List 的方法要求。
任何对我研究进展的帮助将不胜感激!!谢谢。
swift - 只能从运行循环中添加通知块
我在这部分代码上有一些崩溃:
我认为问题在于我不在MainScheduler.instance
rxRealm 上,main thread
但我不想要它。有可能修复它吗?
fetchTrainRx:
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} }"