Chr*_*eat 2 curl urlrequest ios swift urlsession
我正在尝试将以下curl请求Swagger转换为URLRequest:
curl -X GET --header 'Accept: application/json'
--header 'Authorization: key ttn-account-v2.<app-key>'
'https://<app-id>.data.thethingsnetwork.org/api/v2/query'
Run Code Online (Sandbox Code Playgroud)
URL和标题设置正确。我仍然收到响应:401-未经授权。
let key = "ttn-account-v2.<app-key>"
let url = URL(string: "https://<app-id>.data.thethingsnetwork.org/api/v2/query")
var request = URLRequest(url: url!)
request.httpMethod = "GET"
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("key \(key)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
print(error!)
return
}
guard let data = data else {
print("Data is empty")
return
}
let json = try! JSONSerialization.jsonObject(with: data, options: [])
print(json)
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
我想念什么吗?
出问题的是,您创建了一个完美的请求,但是dataTask仅对URL而不是对请求进行了处理,从而跳过了所有请求。这种方式HTTPHeaders不会随请求一起发送,因此未经授权。只需将任务创建行更改为此:
let task = URLSession.shared.dataTask(with: req) { data, response, error in
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |