【问题标题】:Perform POST request in Swift在 Swift 中执行 POST 请求
【发布时间】:2014-07-26 23:00:24
【问题描述】:

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

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

这是我目前所拥有的:

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

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

有人愿意称重吗?

【问题讨论】:

    标签: ios post nsurlconnection swift


    【解决方案1】:

    stringByAddingPercentEscapesUsingEncoding 返回一个字符串而不是一个 NSData 对象。根据this的回答,你需要用这个来转换成NSData实例:

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

    【讨论】:

      【解决方案2】:

      使用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
              } 
      }
      

      【讨论】:

      • 使用 Alamofire 有什么好处?
      猜你喜欢
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2015-11-28
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多