2017-10-16 103 views
0

我试图转换下面卷曲请求扬鞭让我给URLRequest:转换卷曲的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' 

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() 

我错过了什么吗?

+0

你确定键头是正确的?检查,如果它不将其作为可选(...) –

回答

2

到底哪里出问题了就是你打造一个完美的请求,但后来通过做dataTask仅通过网址,而不是请求跳过它。这样HTTPHeaders不会与请求一起发送,因此它没有被授权。 只要改变任务创建行这样的:

let task = URLSession.shared.dataTask(with: req) { data, response, error in 
    ... 
} 
+0

完蛋了,非常感谢你! – ChrisTheGreat