Я просто пытаюсь отправить строку JSON через Swift3 httprequest.POST w/JSON Body - Swift3 - фрагменты?
Пробовал с помощью словаря, и беглый строку ...
func getToken(successHandler: @escaping (Any) -> Void, errorHandler: @escaping (Any) -> Void) {
var request = URLRequest(url: URL(string: "http://my-api.domain.com/getToken")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
do
{
// try with Dictionary
let bodyJson: [String: String] = [
"username": "theusername"
]
let bodyJsonData = try JSONSerialization.data(withJSONObject: bodyJson, options: [])
// try with escaped String
let jsonString = "{" +
"\"username\": \"theusername\"," +
"}"
let jsonStringData = jsonString.data(using: String.Encoding.utf8)
//request.httpBody = bodyJsonData
request.httpBody = jsonStringData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard error == nil else {
print(error)
errorHandler(error)
return
}
guard let data = data else {
print("Data is empty")
errorHandler("Data is empty")
return
}
var json: Any? = nil
do
{
json = try JSONSerialization.jsonObject(with: data, options: [])
DispatchQueue.main.asyncAfter(deadline: .now()) {
successHandler(json)
}
}
catch let error as NSError {
errorHandler(error)
}
}
task.resume()
}
catch
{
errorHandler(error)
}
}
я получаю:
Handle Error: Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
Я не могу найти, как попробовать, позволяющие фрагменты, все примеры/Учебники предназначены для Swift2.x:/
Непонятно, что делать!
Я постараюсь это, спасибо за ответ :) –
Хммм, я использую сервер Node.js (рамочный Хапи), и я console.log'ing в request.payload и я вижу, что я 'm pass, но он странно вложен, поэтому я не могу его разобрать ... request.payload = {' {"username": "theusername"} ':' '} ... как будто мой json вложен в одинарные кавычки , но также является ключом к некоторому следующему словарю –
Мне пришлось добавить ... request.setValue («application/json», forHTTPHeaderField: «Content-Type») ... все хорошо, я благодарю вас за Помогите!!! Счастливого дня благодарения!!! :) –