Ha en 'empty body' vid GET i Swift
Hej!
Jag försöker göra GET till ett API. Har en så kallad "X-Trackertoken" i min app, som skickas med i header:n. Denna identifierar användaren.
Har hört talas om på "Stack Overflow" att själva http-body måste vara tomt för att GET anropet ska lyckas. Jag har testat med nil, Data() och att helt enkelt inte ha med request?.httpBody alls. Ingenting fungerar... Får statuskoden 401 Unauthorized. Vet ni hur man ska sätta http-body?
Här är metoden jag använder för POST anropet. request är en instansvariabel i klassen.
func formValuesAPICall(url: String, params: [String: String], method: HttpMethod, success: @escaping(Data?, HTTPURLResponse?, NSError?) -> Void, failure: @escaping(Data?, HTTPURLResponse?, NSError?) -> Void) {
request = URLRequest(url: URL(string: url)!)
if (!params.isEmpty) {
let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 10
config.timeoutIntervalForResource = 10
print("X-Trackertoken form values call: \(params["X-Trackertoken"] ?? "")")
config.httpAdditionalHeaders = [
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded",
"X-Trackertoken": params["X-Trackertoken"] ?? ""
]
if (method.rawValue == "GET") {
//request?.httpBody = nil
//request?.httpBody = Data()
request?.httpBody = encodeParameters(params)
} else if (method.rawValue == "POST") {
request?.httpBody = encodeParameters(params)
}
request?.httpMethod = method.rawValue
session = URLSession(configuration: config)
session?.dataTask(with: request! as URLRequest) { (data, response, error) -> Void in
if let data = data {
if let response = response as? HTTPURLResponse, 200...299 ~= response.statusCode {
success(data, response, error as NSError?)
} else {
failure(data, response as? HTTPURLResponse, error as NSError?)
}
} else {
failure(data, response as? HTTPURLResponse, error as NSError?)
}
}.resume()
}
}
Jag kan inte Swift, men kan du prova med någon annan metod, t. ex. programmet curl, för att se om det fungerar över huvud taget, och att ditt token är korrekt?
Tack för tipset! Det ska jag testa!
Prövade med curl!
Min X-Trackertoken visar sig vara fel, så jag får ta ett snack med min lärare.
Tack för hjälpen!