Ответ Alamofire .POST JSON ноль с использованием переполнения стека

Как я могу получить значения JSON из моего скрипта PHP?

я получил nil в моем ответе JSON.

Alamofire.request работает. (то есть я получаю данные JSON в своем скрипте PHP.)

PHP скрипт работает. (т.е. я могу обработать входной JSON и сгенерировать правильную строку JSON, используя json_encode.)

Вот код …

Swift:

Alamofire
.request(.POST, "http://www.myserver.com/from_swift.php", parameters: dicMyDictionary, encoding: ParameterEncoding.JSON)
.responseJSON {
(request, response, JSON, error) in
println("request: \(request)")
println("response: \(response)")
println("JSON: \(JSON)")
println("error: \(error)")
}

Результаты печати:

request: <NSMutableURLRequest: 0x7ff3b242de90> { URL: http://www.myserver/from_swift.php }

response: Optional(<NSHTTPURLResponse: 0x7ff3b2776c40> { URL: http://www.myserver/from_swift.php } { status code: 200, headers {
Connection = "Keep-Alive";
"Content-Type" = "application/json";
Date = "Fri, 16 Jan 2015 12:02:24 GMT";
"Keep-Alive" = "timeout=5, max=200";
Server = "Apache/2.2.29 (Unix)";
"Transfer-Encoding" = Identity;
"X-Powered-By" = "PHP/5.4.36";
} })

JSON: nil

error: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x7ff3b380db80 {NSDebugDescription=Invalid value around character 0.})

PHP:

<?php
header('Content-Type: application/json');
... More code here ...
echo json_encode($aryOfStrings);
?>

Решение:
У меня была ошибка в моем скрипте PHP. В результате сообщение об ошибке передается обратно в ответе перед строкой JSON. В результате .responseJSON правильно не распознал данные как JSON.

Чтобы помочь другим, когда вы получаете nil в параметре ваших данных из .responseJSON, устранение неполадок путем изменения .responseJSON в .responseString чтобы увидеть, если вы получите какие-либо результаты обратно в параметре данных. Например, когда я изменил на .responseString Я видел следующее:

JSON: Optional("<br />\n<b>Strict Standards</b>:  mysqli::next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method in <b>/home/xxx/public_html/from_swift.php</b> on line <b>115</b><br />\n{\"books\":[\"the hunger games\",\"mockingjay\"]}")

Обратите внимание, сообщение об ошибке перед строкой json. После того, как я исправил скрипт PHP и изменил обратно на .responseJSON, это сработало…

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector