请求的资源不支持使用 Alamofire 的 http 方法“T”(或“ST”)

Posted

技术标签:

【中文标题】请求的资源不支持使用 Alamofire 的 http 方法“T”(或“ST”)【英文标题】:The requested resource does not support http method 'T' (or 'ST') with Alamofire 【发布时间】:2019-03-14 21:39:25 【问题描述】:

我遇到了一个奇怪的问题。使用 Alamofire 运行一系列 HTTP 请求时,我收到错误响应:

请求的资源不支持http方法'T'

(上面是一个 GET 请求)

Alamofire.request(url, method: request.httpMethod, parameters: request.parameters, encoding: request.encoding, headers: request.headers).responseData  response in

当我调试并查看 request.httpMethod 的值时,它始终是完整的 GET,但无论如何我都会收到该错误。我已经尝试在 Alamofire 中遵循更深层次的逻辑,但它似乎保留了 GET 的值,只要我可以通过我的 pod 跟踪它。

我让 Charles 监听一些 http 网络流量,看看它是否标记为 GETT,但该请求的流量根本没有显示...

我已经重现了模拟器和设备上的行为。

如果我运行完全相同的 http 请求,但使用 urlSession.uploadTask,它可以正常工作并且永远不会遇到问题。

有人看到此内容或对如何确定导致截断的原因有任何想法吗?最好我能猜到它发生在 Alamofire,但我不知道从这里去哪里。

【问题讨论】:

您使用哪种编码?尝试编码:URLEncoding.default。检查是否存在问题,如果使用 Content-Type: application/json 这行得通...但是为什么呢? 【参考方案1】:

您使用哪种编码?

尝试编码:URLEncoding.default.

检查是否存在问题,如果使用Content-Type: application/json

如果后端使用的是 spring,则可能会导致该问题。这似乎是一个后端问题。

有些人在使用 Alamofire 时遇到问题,而 Moya 则在其中工作, 其他一些人对 Alamofire 工作的 Moya 有问题。 一个奇怪的问题,但我很确定,后端导致 问题!

【讨论】:

我们的后端不是 spring,但这确实解决了问题。我唯一的想法是有这个问题的有罪端点是一个不需要 JSONEncoding 的 GET 请求

以上是关于请求的资源不支持使用 Alamofire 的 http 方法“T”(或“ST”)的主要内容,如果未能解决你的问题,请参考以下文章

在添加完成块之前触发 Alamofire 网络请求?

Alamofire5 设置请求超时时间

Alamofire5 设置请求超时时间

带有嵌套参数的 Alamofire POST 请求不返回任何内容

为 API Gateway REST API 资源启用 CORS

在使用两个嵌套的 alamofire 请求滚动之前,TableView 不显示数据