2016-05-24 10 views
0

Ich habe diese Curl-Post, die gut funktioniert, aber für das Leben von mir kann ich es nicht mit NSURLSession oder Alamofire arbeiten. Die Locke, die feinen zurück ist:Equivalent Swift NSURLSession oder Alamofire Curl Beitrag

curl https://api.truevault.com/v1/vaults/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/blobs \ 
-X POST \ 
-u yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy: \ 
--form "[email protected]" \ 
-H "Content-Type:multipart/form-data" 

Egal, welche Variation von curl oder NSURLSession ich bekomme ich einen 401-Fehler, aber es schließt erfolgreich mit curl! Bitte helfen Sie! Vielen Dank!

CURRENT ALAMOFIRE VERSUCH

 let headers = ["Authorization": Config.trueVaultKey, "Content-Type": "multipart/form-data"] 

     Alamofire.upload(
     Alamofire.Method.POST, 
     url!, 
     headers: headers, 
     multipartFormData: { multipartFormData in 
      multipartFormData.appendBodyPart(
       data: dat!, 
       name: "file", 
       fileName: "license.png", 
       mimeType: "image/png" 
      ) 
     }, 
     encodingCompletion: { encodingResult in 
      switch encodingResult { 

      case .Success(let upload, _, _): 
       upload.responseString { response in 
        //JSON = response.result.value! as String 
        debugPrint(response) 

        print("\n\n\nREQUEST HEADER: \(response.request!.allHTTPHeaderFields!)") 
        print("\n\n\nREQUEST BODY: \(response.request!.HTTPBody)") 
        print("\n\n\nREQUEST BODY STREAM: \(response.request!.HTTPBodyStream)") 
       } 
      case .Failure(let encodingError): 
       print(encodingError) 
      } 
    }) 
+0

können Sie Ihren Swift-Code veröffentlichen? – sonique

+0

aktualisiert mit Swift-Code – Gregg

+0

Ich denke, dass Sie keine Header festlegen müssen, wird mehrteilig automatisch hinzugefügt. nicht sicher, was Autorisierung ist, aber ich kann es nicht in Ihrem cURL sehen. ist es die XXXX-XXXX-XXXX? also sollte es in der URL nicht Header angezeigt werden. – sonique

Antwort

0

versuchen Ihre URL wie folgt zu erstellen:

let userAuth = "username:password" // credential 
let url = "https://\(userAuth)@api.truevault.com/v1/vaults/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/blobs" // notice the at(@) sign 

nicht setzen die Header, werden sie automatisch eingestellt werden.

+0

Danke, aber das funktioniert auch nicht ... immer noch 401 – Gregg

+0

können Sie Ihren Code mit der URL aktualisieren, die Sie anrufen? und wenn irgendwelche Anmeldeinformationen lassen sie als "Benutzername", "Passwort. Als xxxx und JJJJ ist schwer zu lesen. – sonique