ios 在 Swift 中执行 POST 请求

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24068866/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 00:33:06  来源:igfitidea点击:

Perform POST request in Swift

iospostnsurlconnectionswift

提问by Jake Johnson

I am trying to do something like this:

我正在尝试做这样的事情:

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];

This is what I have so far:

这是我到目前为止:

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

However, the var requestBodyData: line throws the first stone with "Cannot convert the expression's type NSData to type NSData"

但是, var requestBodyData: 行抛出了第一块石头“无法将表达式的类型 NSData 转换为类型 NSData”

Anyone care to weigh in?

有人关心称重吗?

采纳答案by Rengers

stringByAddingPercentEscapesUsingEncodingreturns a string instead of an NSData object. According to thisanswer, you need to use this to convert to an NSData instance:

stringByAddingPercentEscapesUsingEncoding返回一个字符串而不是一个 NSData 对象。根据这个答案,您需要使用它来转换为 NSData 实例:

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

回答by Cody

Using Alamofireto send HTTP POST request

使用Alamofire发送 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
        } 
}