2014-06-05 13 views
16

che sto cercando di fare qualcosa di simile:Eseguire richiesta POST a 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]; 

Questo è quello che ho finora:

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() 

Tuttavia, la var requestBodyData: linea getta la prima pietra con "Impossibile convertire il tipo di espressione NSData per digitare NSData"

Qualcuno deve preoccuparsi di pesare?

risposta

10

stringByAddingPercentEscapesUsingEncoding restituisce una stringa anziché un oggetto NSData. Secondo this risposta, è necessario utilizzare questo per convertire a un'istanza NSData:

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

sembra che il gioco è fatto. grazie uomo. – xyclos

+0

Come posso gestire una risposta del server usando questo esempio? –

1

Utilizzando Alamofire per inviare richiesta HTTP POST

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

Qual è il vantaggio dell'uso di Alamofire? – Honey