2016-08-09 45 views
0

Ich versuche, eine PUT-Anforderung mit Swift auszuführen. In einem REST-Client, wenn ich versuche, eine REST-Anfrage die folgende Art und Weise zu tun:Swift-REST-Anforderung PUT Optional (502 Schlechtes Gateway: Registrierter Endpunkt konnte die Anforderung nicht verarbeiten.)

In Body- x-www-form-urlencoded, füge ich vote=1 und mit der ID in der param zum Beispiel genommen werden: /user/:id, es funktioniert !

Ich versuche, das gleiche in Swift Code zu tun, funktioniert es nicht und ich bekomme responseString = Optional(502 Bad Gateway: Registered endpoint failed to handle the request.

Hier ist mein Code:

var baseURL = "http://<domain>/user" 
let putURL = baseURL + "/\(id)" 

print(putURL) 
let request = NSMutableURLRequest(URL: NSURL(string: putURL)!) 
request.HTTPMethod = "PUT" 

let putString = "vote=1" 
request.HTTPBody = putString.dataUsingEncoding(NSUTF8StringEncoding) 
request.timeoutInterval = 1500 

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
    data, response, error in 
    guard error == nil && data != nil else { 
     print("error=\(error)") 
     return 
    } 

    let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
    print("responseString = \(responseString)") 
} 
task.resume() 
+0

Im Allgemeinen zeigt der 5XX-Fehlercode einen serverseitigen Fehler an. Wenn der Server Ihr ist, können Sie ihn debuggen, um zu verstehen, was schief gelaufen ist. Achten Sie darauf, welche Header Sie senden und welches Format Ihre Parameter haben. –

Antwort

0

Sie haben vergessen, den Inhaltstyp zu setzen, zum Beispiel

request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 

ohne dass der Server nicht wissen, was mit dem Klecks Zufallsdaten zu tun, dass man es nur geschickt.

Ich sage nicht, dass dies das einzige Problem ist, aber es ist definitiv ein Problem, und einer groß genug, um den Fehler zu verursachen, den Sie sehen.