NSURLSession.sharedSession()。dataTaskWithRequest(request)除非出现错误,否则不返回任何内容

时间:2015-11-30 17:27:43

标签: ios swift nsurlsessiondatatask

为什么没有打印任何结果?

我一直在寻找答案。我尝试了很多不同的代码示例块。除非产生错误,否则打印语句永远不会触发。例如:如果我将URL更改为" http"只有没有别的,我自然会得到一个错误,它打印错误。但是,任何有效的URL都不会在print语句中产生任何结果。

func post()
{
    let request = NSMutableURLRequest(URL: NSURL(string: "http://www.thebeerstore.ca")!)
    request.HTTPMethod = "POST"
    let postString = "experiment"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in
        if error != nil {
            print("error=\(error)")
            return
        }

        print("response = \(response)")

        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("responseString = \(responseString!)")

    }
    task.resume()
}

编辑:如果我使用游乐场,但只能在操场上使用它。

2 个答案:

答案 0 :(得分:0)

在您的应用程序的Info.plist文件中,添加属性App Transport Security Settings,然后添加Allow Arbitrary Loads并为其指定YES

通过Info.plist中的上述设置,该应用应该还可以加载您的http://网址

enter image description here

  

注意:我建议您不要使用上述设置   生产构建,可能会导致安全问题。

答案 1 :(得分:0)

对此没有很好的解释,但最终将这个相同的问题代码粘贴到我的主项目中,它现在完全正常。改变了什么??? Arrrrg!浪费了多少小时,我仍然不知道为什么它不能在我的主要应用程序之外工作。感谢大家的帮助。

最终代码:

我希望我可以发送超过100MB的邮件请求,以便在服务器端进行解释并存储到数据库中。哈文以前没有这样做过。我是新手。

func post()
{
    let request = NSMutableURLRequest(URL: NSURL(string: "http://bruceexpress.com/database.php")!)
    request.HTTPMethod = "POST"
    request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(stores, options: [])
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
    {
        data, response, error in
        if error != nil {
            print("error=\(error)")
            return
        }

        print("response = \(response)")

        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("responseString = \(responseString!)")

    }
    task.resume()
}

编辑:是的,您可以发布大量数据。这是正确的方法吗? (原谅我愚蠢的问题,但我正在恢复2001年遗留下来的编程技巧。我是一个非常过时的人。)

基本上,我所做的就是阅读http://www.thebeerstore.ca上的所有数据,提取每种啤酒及其信息和价格,并提取每个商店及其信息。我解释了这些数据,将其转换为一个大的JSON块,并将其发送到我的服务器,由php脚本解释,该脚本将这些数据存储到数据库中。

听起来像是正确的事情,还是有更好的方法来填充数据库?