Swift Vapor 客户端未在发布请求时发送正文

问题描述 投票:0回答:1

我正在尝试使用客户端上的

.post()
请求向 Vapor 中的外部 API 发出请求。

let payload = TwitchTokenPayload(client_id: client_id,
                                 client_secret: client_secret,
                                 grant_type: "client_credentials")

req.client.post("https://id.twitch.tv/oauth2/token", content: payload)

有效负载正确符合内容协议,但我仍然从 Twitch 收到 400 错误,并表示

missing Client Id

我已在 Postman 上设置了相同的请求,并且有效。

我注意到一件事,我不确定这是否是 Vapor 的一个错误,但在客户端文件的

send()
函数中,它们实际上总是传递一个
nil
主体。

var request = ClientRequest(method: method, url: url, headers: headers, body: nil, byteBufferAllocator: self.byteBufferAllocator)

我认为这可能是导致问题的原因。有没有人有其他方法来解决这个问题?或者我应该不使用 Vapor 来实现标准 HTTP 请求?如果是这样的话,这似乎是这个框架的一个主要问题。

swift http server backend vapor
1个回答
0
投票

还有另一种方法应该可以正常工作

let payload = TwitchTokenPayload(client_id: client_id,
                                 client_secret: client_secret,
                                 grant_type: "client_credentials")
req.client.post("https://id.twitch.tv/oauth2/token") { req in
    try req.content.encode(payload, as: .json)
}
© www.soinside.com 2019 - 2024. All rights reserved.