2016-07-25 5 views
0

Ich finde jetzt Lösung für hinzufügen content-type: application/json in Alamofire Content-Type-Anwendung/Json für PUT-Methode. Ich habe mich wie folgt entwickelt, funktioniert aber nicht richtig.Alamofire Content-Type-Anwendung/Json für PUT-Methode

 Alamofire.request(.PUT, Config.preferenceURL, parameters: param, headers: headers) 
      .validate(contentType: ["application/json"]) 
      .responseJSON { response in 
       let swiftyJsonVar = JSON(response.result.value!) 
       print(swiftyJsonVar) 
       if (swiftyJsonVar["success"]) { 

       } 

       JHProgressHUD.sharedHUD.hide() 
     } 
+0

Zeige/füge das Fehlerprotokoll hinzu, was du bekommst. – Rugmangathan

Antwort

0

content-type: application/json sieht wie folgt hinzufügen: -

let URL = NSURL(string: "https://httpbin.org/post")! 
let mutableURLRequest = NSMutableURLRequest(URL: URL) 
mutableURLRequest.HTTPMethod = "POST" 

let parameters = ["foo": "bar"] 

do { 
    mutableURLRequest.HTTPBody = try NSJSONSerialization.dataWithJSONObject(parameters, options: NSJSONWritingOptions()) 
} catch { 
    // No-op 
} 

mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") 

Alamofire.request(mutableURLRequest) 

More detail here

1

Sie benötigen encoding: .JSON in Ihrem request Methode angeben. Andernfalls werden Ihre Parameter als Abfrageparameter in der URL codiert. Mit .JSON Codierung wird die Content-Type Kopfzeile automatisch für Sie festgelegt.

Alamofire.request(.PUT, Config.preferenceURL, parameters: param, encoding: .JSON, headers: headers) 

Sie können auch die debugPrint API verwenden, um die cURL Befehl entspricht der Anfrage an den Server Sie senden auszudrucken.

let request = Alamofire.request(.PUT, Config.preferenceURL, parameters: param, encoding: .JSON, headers: headers) 
debugPrint(request) 

Prost.

+0

* "' Content-Type' Header wird automatisch für Sie gesetzt. "* Wird dies bei 4.0 geändert? Ich musste es manuell hinzufügen, auch wenn ich 'JSONEncoding.default' verwende – osrl