如何使用 SWIFT 5 在 GET 请求中传递表单编码数据



我正在使用 Swift 5 并尝试从我正在使用 MVC 开发的 API 获取访问令牌 asp.net 并尝试获取访问令牌。使用Postman,我将请求设置为GET,在正文中传入一些信息,然后返回访问令牌。

在 XCode 中,当我尝试这样做时,它给了我错误:"GET 方法不能有主体。

我的代码:

func GetToken(email: String, password: String) {
let dataToSend = [
"grant_type": "password",
"username": email,
"password": password
]
let newData = try! JSONSerialization.data(withJSONObject: dataToSend, options: [])
var request = URLRequest(url: getNewTokenURL)
request.httpMethod = "Get"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = newData
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else {return}
do {
let myData = try JSONDecoder().decode(TokenResponse.self, from: data)
self.userToken = myData.accessToken
}
catch {
}
}.resume()
}

如何使用需要向其发送的数据执行 GET 请求?

GET 请求没有正文。GET 请求中的参数与其 url 一起作为查询参数传递。

let url = URL(string: "https://www.example.com/getExample?sampleParam=sampleValue&anotherParam=anotherValue")

编辑:您还需要在所有大写字母中给出方法。由于GET是默认值,因此您没有问题。

此外,如果您确定数据作为 JSON 传递,那么该方法应该是 POST 方法,您只需将请求的方法设置为 POST,如下所示:

request.method = "POST"

注意:区分大小写。

最新更新