Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios HTTP POST函数_Ios_Swift_Http Post - Fatal编程技术网

Ios HTTP POST函数

Ios HTTP POST函数,ios,swift,http-post,Ios,Swift,Http Post,我正在尝试使用POST函数从标签中提取文本并将其作为电子邮件发送。问题是,每当我尝试使用标签上的文本时,电子邮件中唯一的数据就是[] 有什么想法可能是错的吗 代码: 编辑: 使用此代码,我现在在电子邮件中获得{“”}: func postToServerFunction() { var emailText = labelText var url: NSURL = NSURL(string: "http:www.webaddress.com/email_test.php")!

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

有什么想法可能是错的吗

代码:

编辑:

使用此代码,我现在在电子邮件中获得{“”}:

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

如果您仍然希望使用此API,那么应该使用“数据”对象

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

“数据”可能包含对请求的响应数据。可能通过转换为stringI来检查,我对swift很陌生,你能告诉我怎么做吗?对于
guard
是的,但是如果swift 1.x中的let something=…对于延迟响应,你也可以使用条件绑定
。我尝试了您的代码,但在电子邮件正文中仍然只能有[]。你能想出什么解决办法吗@TMPZ您是否检查了响应值?你得到的数据是什么?您的电子邮件测试似乎有问题。phpI在运行它时返回了
(,4)
。我在
let response=response
上也遇到了一个错误。特别是该片段中的第一个响应。你知道是什么原因导致的吗?很难说,你犯了什么样的错误?同时打印数据和response.statusCode
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()