2014-06-05 25 views
16

Staram się zrobić coś takiego:wykonać żądanie POST w 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]; 

To, co mam tak daleko:

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

Jednak requestBodyData var: linia rzuca pierwszy kamień z "Nie można przekonwertować typu NSData wyrażenia na typ NSData"

Czy ktoś ma ochotę ważyć?

Odpowiedz

10

stringByAddingPercentEscapesUsingEncoding zwraca ciąg znaków zamiast obiektu NSData. Według this odpowiedź, trzeba to wykorzystać do konwersji do instancji NSData:

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

Wygląda na to wszystko. dzięki. – xyclos

+0

Jak mogę zarządzać odpowiedzią serwera za pomocą tego przykładu? –

1

Korzystanie Alamofire wysłać żądanie 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

Jakie korzyści daje zastosowanie Alamofire? – Honey