Как быстро прикрепить несколько данных к запросу POST.
Как прикрепленный снимок экрана от почтальона, он работает нормально при выборе опции x-www-form-urlencoded
Как прикрепить 5 данных к телу как вариант 'x-www-form-urlencoded'
.
Вот код,
var request = URLRequest(url: urlString)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
var urlComponents = URLComponents()
urlComponents.queryItems = [
URLQueryItem(name: “***”, value: “***”),
URLQueryItem(name: "***", value: "***"),
URLQueryItem(name: "***", value: "***"),
URLQueryItem(name: "***", value: "***"),
URLQueryItem(name: "***", value: "***"),
]
request.httpBody = urlComponents.percentEncodedQuery?.data(using: String.Encoding.utf8)
let loadDataTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let _ = error{
completion(false,error)
}
else if let response = response as? HTTPURLResponse{
if response.statusCode != 200{
completion(false,error)
}
else{
do{
if let parsedData = try? JSONSerialization.jsonObject(with: data!, options: []){
let ff = parsedData as? Dictionary<String,Any>
print(ff)
}
}
}
}
}//let loadDataTask
loadDataTask.resume()
}
** Самое простое решение: ** Нажмите на Code
в почтальоне (прикрепленный экран). Выберите Swift в модальном окне, которое появится после нажатия кнопки «Код». Вы получите нужный вам код, удалите ненужные параметры почтальона
Один из простых способов создать тело http - использовать URLComponents
следующим образом:
var request = URLRequest(url: yourUrl)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
var urlComponents = URLComponents()
urlComponents.queryItems = [
URLQueryItem(name: "your_first_parameter", value: "someValue"),
URLQueryItem(name: "your_second_parameter", value: "someValue"),
URLQueryItem(name: "your_third_parameter", value: "someValue")
]
request.httpBody = urlComponents.percentEncodedQuery?.data(using: .utf8)
Я обновил код. это не работает. Я получил код ответа 400.
Правильно ли вы установили элементы запроса? Потому что в остальном ваше принятое решение ничем не отличается. За исключением того, что это решение более надежно в отношении кодировки запросов.
SWIFT 4:
let url = URL(string: “url”);
var urlRequest = URLRequest(url: url!)
urlRequest.setValue("application/x-www-form-urlencoded",forHTTPHeaderField: "Content-Type")
urlRequest.httpMethod = "POST"
let postString = “paramerter1=value1¶meter2=value2”
urlRequest.httpBody = postString.data(using: .utf8)
Только строковые данные