Swift 4 Codable Struct с почтовым запросом

я хочу отправить url.request (POST) с такой кодируемой структурой:

struct Picklist : Codable {
var id = Int()
var ean = String()
var position = String()
}

и моя просьба такова:

 let request = NSMutableURLRequest(url: NSURL(string: "http://XXX.XX.XX.XX/NEW/index.php")! as URL)
request.httpMethod = "POST"let myID = Picklist.init(id: 3, ean: "asdf", position: "q")
let encoder = JSONEncoder()
do {
let jsonData = try encoder.encode(myID)
request.httpBody = jsonData
print("jsonData: ", String(data: request.httpBody!, encoding: .utf8) ?? "no body data")
} catch {
print("ERROR")
}

let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in

if error != nil {
print("error=\(error)")
return
}

print("response = \(response)")

let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString)")
}
task.resume()

и на стороне сервера у меня есть этот скрипт PHP:

<?php
print_r($_POST);
?>

но я получаю:

responseString = Optional(Array
(
[{"id":3,"ean":"asdf","position":"q"}] =>
)

Моя проблема в том, что я не могу получить ключи со значением на моем PHP ..

что не так с кодом?

1

Решение

Наконец, ответ:

если вы хотите работать со строкой ответа, просто перейдите и расшифруйте «данные»

Например :

guard let data = data else {return}
do{
let realData = try JSONDecoder().decode(response.self, from: data)
completion(realData)
}catch let jsonErr{
print(jsonErr)
}

в realData вы можете работать с данными, но вам нужно создать Codable / decobale Struct для работы с

ответ — моя структура

или же :

let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector