Swift NSURLSession dataTaskWithRequest completionHandler获取NSZeroData?

Swift NSURLSession dataTaskWithRequest completionHandler获取NSZeroData?,swift,nsdata,nsurlsession,swift-playground,stackexchange-api,Swift,Nsdata,Nsurlsession,Swift Playground,Stackexchange Api,我正在尝试从堆栈交换API下载一些XML。但是,我没有得到任何结果。URL在浏览器中访问时会显示XML,但我似乎无法以NSData对象的形式获得它。或者更确切地说,我一直以NSZeroData收场。这是我的代码,请注意,它是用Swift编写的: import UIKit import XCPlayground XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true) var myRequest = NSURLR

我正在尝试从堆栈交换API下载一些XML。但是,我没有得到任何结果。URL在浏览器中访问时会显示XML,但我似乎无法以NSData对象的形式获得它。或者更确切地说,我一直以NSZeroData收场。这是我的代码,请注意,它是用Swift编写的:

import UIKit
import XCPlayground

XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true)

var myRequest = NSURLRequest(URL:NSURL(string: "api.stackexchange.com/answers?site=stackoverflow"))

var mySession = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())

var dataTask = mySession.dataTaskWithRequest(myRequest, completionHandler: { (data, response, error) in
    var myData = data //myData now equals NSZeroData
})
dataTask.resume()
尝试:


Diff是协议“http”

一个适合我的解决方案

如果您的
customersString
位于
NSURL*url=[NSURL URLWithString:customersString]以服务器上的php文件为目标(可能是一个极端情况):

检查您是否在服务器上使用了正确的PHP版本!例如,这可以通过一个新的php文件来完成:

说明:

您的php文件可能无法以正确的方式构建所需的JSON(数组)响应,因为php 5.4版以不同的方式构建数组(比较:):


由于损坏的JSON,这可能会导致NSZeroData响应


因此:在我的服务器上更改PHP版本为我解决了这个问题。希望这有帮助

你找到解决办法了吗?
var myRequest = NSURLRequest(URL:NSURL(string: "http://api.stackexchange.com/answers?site=stackoverflow"))
<?php
    //before PHP 5.4
    $array = array(
        "foo" => "bar",
        "bar" => "foo",
    );
    // since PHP 5.4
    $array = [
        "foo" => "bar",
        "bar" => "foo",
    ];
?>