问题标签 [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 投票
3 回答
8596 浏览

ios - 使用 retryWhen 根据 http 错误代码更新令牌

我在如何使用 moya 和 rxswift 刷新 oauth 令牌上找到了这个示例,我必须稍作改动才能编译。此代码适用于我的场景 80%。它的问题是它将针对所有 http 错误运行,而不仅仅是 401 错误。我想要的是让我所有的其他 http 错误作为错误传递,这样我就可以在其他地方处理它们,而不是在这里吞下它们。

使用此代码,如果我得到 a HttpStatus 500,它将运行身份验证代码 3 次,这显然不是我想要的。

我试图更改此代码以仅处理401错误,但似乎无论我做什么我都无法编译代码。它总是抱怨错误的返回类型,"Cannot convert return expression of type Observable<Response> to return type Observable<Response>"这对我来说毫无意义..

我想要什么:处理 401,但在所有其他错误上停止

0 投票
0 回答
1830 浏览

swift - Swift 泛型:“无法推断出泛型参数 T”

我正在尝试制作一个基于 Moya 和 Object Mapper 的通用请求处理程序类。基本上,我想要一个对 Moya 目标执行请求并对成功和失败情况执行一些基本处理的方法:

基于这个答案,我的课程将是这样的:

我的问题是我是否可以在函数级别而不是类级别使用泛型获得相同的结果:

我已经尝试过了,但我的代码出现了构建错误:

Generic parameter "T" could not be inferred

0 投票
1 回答
1839 浏览

swift - 使用 RxSwift 触发的两个事件

嗨,我正在学习一些 RxSwift,我不明白为什么 makeLoginRequest 被调用两次......当登录正确时,我推送到另一个控制器,但 observable 仍然通知另一个事件,因此它推送两次下一个控制器。 .

在 viewModel 中,代码是这样的:

并在控制器中

任何人都可以解释发生了什么?

谢谢!

0 投票
0 回答
383 浏览

ios - iOS:HTTPS GET:应用程序从锁定屏幕返回后来自服务器的空响应

问题: 如果在从锁屏返回应用程序后 1-2 秒内发送HTTPS GET 会返回空响​​应。

重现步骤

  1. 启动我的应用程序。它在屏幕上的 TableView 中显示新闻源。
  2. 锁定 iPhone。
  3. 解锁 iPhone
  4. 在 1-2 秒内对 TableView 进行拉动刷新,以便它向 YouTube 发送 HTTPS GET 请求以从特定频道获取视频列表。

预期结果:我收到 YouTube 的回复,其中包含视频列表。

实际结果:我从 Moya 收到“空响应”日志。

注意:下一个相同的拉动刷新工作。如果您等待 2 秒并进行拉动以刷新 - 也可以完美运行。奇怪的!

背景: iOS Swift Moya

谁知道为什么?有什么线索吗?伤透了我的脑筋。

UPD 代码链接:https ://yadi.sk/d/Feu0FZkdu9ogr 请尝试体验一下。

0 投票
2 回答
1785 浏览

swift - 绕过应用程序传输安全以允许不安全的 HTTP 服务器

情况:

我必须连接到这两个不同的服务器以进行开发和登台使用。两台服务器都有不受信任的 SSL 证书。例如,这两个服务器 URL 是:

暂存服务器:https://52.70.13.2:1010/

开发服务器:https://example.entrydns.org:1012

每当我尝试调用 API 时,我都会收到以下错误的空响应:

或者有时,

我将Moya用于我的网络层,它基本上只是Alamofire的一个很好的包装器。有关其他信息,我使用XCode 7.3并且该应用程序仅支持> iOS 9.

我做了什么:

我非常了解 Apple 想要强制执行的 App Transport Security 问题。我想禁用它以进行开发,但仍然是徒劳的。我试图绕过 ATS 的一些方法如下:

  1. 在 my 中添加以下内容plist以允许任意加载。

    /li>
  2. 明确定义域异常。

    /li>

这是我的截图plist在此处输入图像描述

  1. 我还尝试禁用 Alamofire 管理器共享实例的服务器信任策略。这是示例代码:

    /li>
  2. 打开 URL 并在我的设备和模拟器上下载证书。

即使经过上述所有步骤,我仍然遇到同样的错误。关于我做错了什么以及我能做些什么来解决这个问题?顺便说一句,如果我可以避免服务器端解决方案,那就太好了。

提前致谢。

参考:

0 投票
1 回答
969 浏览

swift - Moya + Alamofire 验证每个请求

我正在使用Moya+Alamofire并且我正在尝试验证每个请求(如Alamofire.request(.GET, "https://httpbin.org/get").validate())但在Moya.

但我找不到办法做到这一点。

0 投票
1 回答
1159 浏览

swift - 在主项目中找不到链接到 Cocoapod 的静态框架

我正在尝试通过 Carthage 将静态框架(Moya)添加到我的私人 Cocoapod 项目中。

我的目标是将 Moya 作为静态框架包含在我的私有 Cocoapod (SwiftModel) 中,并在我的主项目中也使用 Moya(因为 SwiftModel 依赖于它)。

我通过执行以下步骤将 Moya 添加到我的框架中:

  1. podspec 文件中的链接框架

    s.vendored_frameworks = 'SwiftModel/Carthage/Build/iOS/Moya.framework'

  2. 将 Moya 添加到私有框架(Link Binary With Libraries)

在此处输入图像描述

所以在我的 Pods 项目中,它看起来像这样:

在此处输入图像描述

尝试将路径添加到“Framework Header Search Path”没有进行任何更改。我试图将它添加到主项目和 pods 项目中。

当只是构建私有 pod 时,一切正常并且 Moya 被识别。但是,如果我想构建主项目(包括我的私人 pod),我总是会收到此错误:

未找到架构 arm64 的 Moya 框架

在此处输入图像描述

0 投票
1 回答
8273 浏览

ios - 使用 Moya + RxSwift 处理自定义错误响应

我正在将 Moya 与 RxSwift 一起用于 iOS 应用程序中的网络,并且我希望能够在我Observer的 s 调用时使用我的 API 的自定义错误响应onError

API 始终以以下 JSON 格式返回错误响应:

目标是实现类似于以下代码片段的内容,其中传入的错误onError是我的自定义错误类型而不是Moya.Error类型:

我能够使用自定义PluginType(粘贴在下面,来自this SO question)成功拦截这些错误并将其反序列化到我的自定义错误模型中,但我不知道如何最终将这些模型传递给Observer.

0 投票
1 回答
1344 浏览

swift - Rxswift + Moya + Moya-ObjectMapper 错误处理

我将MoyaMoya-ObjectMapper与 Rxswift 一起使用来发出网络请求。

我的网络请求如下。

如果发生错误,那么我的医院请求Observable将终止,我将永远无法再次提出我的医院请求。

requestHospitalButton轻按后如何重试我的医院请求?

0 投票
2 回答
4984 浏览

ios - 使用 RxSwift 定期更新

我使用以下设置从 API 检索对象(例如 GitHub 问题)。这工作正常。

现在我想定期更新问题列表(例如,每 20 秒)。我考虑过NSTimer完成这项任务,但我想可能有一个我没有想到的干净(er)解决方案(即以 Rx 方式)。

任何正确方向的提示都受到高度赞赏。