swift URLRequest не отправляет параметры
В коде ниже
let bodyData = "?sub=\(id)&name=User&email=test@test.com"
let url = NSURL(string: "https://httpbin.org/get");
let request:NSMutableURLRequest = NSMutableURLRequest(url:url as! URL)
request.httpMethod = "GET"
request.httpBody = bodyData.data(using: String.Encoding.utf8);
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main)
{
(response, data, error) in
if let HTTPResponse = response as? HTTPURLResponse {
let statusCode = HTTPResponse.statusCode
if statusCode == 200 {
// Yes, Do something.
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
if let dictionary = json as? [String: Any] {
let args = dictionary["args"]
NSLog("args:\(args)")
for (key, value) in dictionary{
NSLog("key:\(key) value:\(value)")
}
}
}
}
}
id - это строка, переданная в функцию.
Он вернул верные данные, но тестовый сайт / URL-адрес также возвращает в формате json любые отправленные вами параметры. Но этот фрагмент кода, похоже, не отправляет параметры запроса, определенные в bodyData, и я не могу понять, почему.
1 ответ
Если используется запрос GET, параметры добавляются к URL-адресу и явно URLRequest
не нужен вообще.
Этот код является родным Swift 3 и использует современный API:
let id = 12
let bodyData = "?sub=\(id)&name=User&email=test@test.com"
let url = URL(string: "https://httpbin.org/get" + bodyData)!
URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
do {
if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:Any],
let args = json["args"] as? [String:Any] {
print("args:\(args)")
for (key, value) in args{
print("key:\(key) value:\(value)")
}
}
} catch {
print(error)
}
}.resume()