2014-06-05 6 views
16

Ich versuche, so etwas zu tun:Perform Anfrage POST in Swift

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]; 

request.HTTPMethod = @"POST"; 

NSString *stringData = @"some data"; 
NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 
request.HTTPBody = requestBodyData; 

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

Dies ist, was so weit ich habe:

var url = NSURL(string: "some url") 
var request = NSMutableURLRequest(URL: url) 
request.HTTPMethod = "POST" 

var dataString = "some data" 
var requestBodyData: NSData = dataString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) as NSData 

request.HTTPBody = requestBodyData 

var connection = NSURLConnection(request: request, delegate: self, startImmediately: false) 

println("sending request...") 

connection.start() 

jedoch die var requestBodyData: Linie wirft den ersten Stein with "Kann den Typ NSData des Ausdrucks nicht in den Datentyp NSData konvertieren"

Wer sollte schon wiegen?

Antwort

10

stringByAddingPercentEscapesUsingEncoding gibt eine Zeichenfolge anstelle eines NSData-Objekts zurück. Nach this Antwort, müssen Sie dies zu einer NSData Instanz zu konvertieren verwenden:

let data = (anySwiftString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
+0

scheint zu senden, dass es. Danke, Mann. – xyclos

+0

Wie kann ich eine Serverantwort mit diesem Beispiel verwalten? –

1

Alamofire über die HTTP-POST-Anforderung wie

let request = NSMutableURLRequest(URL: NSURL(string: "https://www.google.com")!) 
request.HTTPMethod = "POST" 

let body = "email=\(email)&access_token=\(token)" 
request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding) 

Alamofire.request(request).responseJSON { response in 

     NSLog("response.request: \(response.request)") // original URL request 
     NSLog("esponse.response: \(response.response)") // URL response 

     switch response.result { 
     case .Success: 
      NSLog("Validation Successful") 
     case .Failure(let error): 
      // Logout 
      NSLog("\(error), \(String(data: response.data!, encoding: NSUTF8StringEncoding))") 
      return 
     } 

     // Save sip account information to NSUserdefaults 
     if let json = response.result.value as? [String: AnyObject]{ 
      // Do your stuff 
     } 
} 
+0

Was bringt Alamofire? – Honey