HTTP POST function



我正在尝试使用POST函数从标签中获取文本并将其作为电子邮件发送。问题是,每当我尝试使用标签中的文本时,电子邮件中唯一的数据就是[]

有什么可能出错的想法吗?

代码:

 func postToServerFunction() {
        var userText : String = labelText.text!
        var url: NSURL = NSURL(string: "http://www.webaddress.com/email_test.php")!
        var request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
        var bodyData = userText
        request.HTTPMethod = "POST"
        request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
            {
                (response, data, error) in
                println(response)
        }
    }

编辑:

有了这个代码,我现在可以在电子邮件中获得{"}:

func postToServerFunction() {
    var emailText = labelText
    var url: NSURL = NSURL(string: "http:www.webaddress.com/email_test.php")!
    var request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
    var bodyData = "(emailText)"
    request.HTTPMethod = "POST"
    request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
        {
            (response, data, error) in
            println(response)
    }
}

iOS9中不赞成使用此API。可能最简单的方法是使用Alamofire(https://github.com/Alamofire/Alamofire)

如果您仍然想使用这个API,那么您应该使用"data"对象。

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
    {
        (response, data, error) in
        let strData = String(data, NSUTF8StringEncoding)
        print(strData)
    }

因此,通过这种方式,您可以从返回的NSData启动字符串实例。

请不要使用NSURLConnection,正如其他人所指出的,它已被弃用。如果您不想依赖外部库(Alamofire),请改用NSURLSession

guard let url = NSURL(string: "http://www.webaddress.com/email_test.php")  else {
  print("bad url")
  return
}
let session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration())
let request = NSMutableURLRequest(URL:url)
request.HTTPMethod = "POST"
request.HTTPBody = "Some Text".dataUsingEncoding(NSUTF8StringEncoding);
let post = session.dataTaskWithRequest(request) { data, response, error in
    guard let data = data, let response = response where error == nil else {
        print("Connection error")
        return
    }
    let strData = String(data, NSUTF8StringEncoding)
    print(strData)
}
post.resume()

最新更新