Я пытаюсь опубликовать json-объект для PHP-скрипта в течение последних 5 часов. Я прочитал все документы, и кажется, что код должен работать, НО это не так. Запрос выполнен и получен в порядке, но я не могу получить доступ к опубликованным json-данным или даже не знаю, правильно ли он отправлен. Я продолжаю получать пустой php-массив вместо данных json.
NSString *jsonString = [self.tableDataSource JSONRepresentation]; NSURL *url = [NSURL URLWithString:@"http://myserver.com/test.php"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"]; [request addRequestHeader:@"Content-Type" value:@"application/json"]; [request appendPostData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; [request startSynchronous];
вот скрипт php (test.php)
$handle = fopen('php://input','r'); $jsonInput = fgets($handle); $decoded = json_decode($jsonInput,true); print_r($decoded);
Я использую последний код ASIHttpRequest из https://github.com/pokeb/asi-http-request.git
Что я делаю не так?????
Cheers, Trav.
Нашел вопрос. У меня была переадресация SSL в конфигурации Apache vhost. Использовал сниффер пакетов tcp, чтобы найти его. как только я удалю перенаправление, я смог получить данные json с:
$handle = fopen('php://input','r'); $jsonInput = fgets($handle); $decoded = json_decode($jsonInput,true); print_r($decoded);
Спасибо всем, кто помог.
Я уверен, что ASIHTTPRequest по умолчанию задает запрос GET. Вы пытаетесь получить данные POST, поэтому я не думаю, что это сработает.
Попробуйте использовать ASIFormDataRequest, который создан для данных POST. Или, по крайней мере, измените метод запроса на POST.
[request setRequestMethod:@"POST"];