NSURLSession dataTaskWithRequest CompleteHandler, извлекающий NSZeroData?

Я пытаюсь загрузить некоторый XML из API Stack Exchange. Тем не менее, я не получаю никаких результатов обратно. 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()

person PopKernel    schedule 14.10.2014    source источник
comment
ты нашел решение?   -  person Sarasranglt    schedule 17.12.2015


Ответы (2)


Пытаться:

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

Diff - это протокол "http"

person Danoli3    schedule 30.03.2015

Одно решение, которое сработало для меня,

если ваш customersString в NSURL *url = [NSURL URLWithString: customersString]; нацелен на php-файл на вашем сервере (возможно, крайний случай):

Проверьте, используете ли вы правильную версию PHP на своем сервере! Это можно, например, сделать с помощью нового php-файла:

<?php phpinfo(); ?>

Пояснение:

Ваш php-файл может неправильно построить желаемый ответ JSON (массив), так как php-версия 5.4 строит массивы по-другому (сравните: Ссылка на PHP.net):

<?php
    //before PHP 5.4
    $array = array(
        "foo" => "bar",
        "bar" => "foo",
    );
    // since PHP 5.4
    $array = [
        "foo" => "bar",
        "bar" => "foo",
    ];
?>

Это может привести к ответу NSZeroData из-за поврежденного JSON.

Итак: Изменение версии PHP на моем сервере решило проблему для меня. Надеюсь это поможет!!!

person esvau    schedule 08.01.2016