ASIHTTPRequest опубликовать JSON на PHP-сервере - PullRequest
8 голосов
/ 17 марта 2011

Последние 5 часов я пытался опубликовать объект json в PHP-скрипте. Я прочитал все документы, и кажется, что код должен работать, но это не так. Запрос сделан и получен нормально, но я не могу получить доступ к опубликованным данным 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, Трав.

Ответы [ 2 ]

4 голосов
/ 19 марта 2011

Нашел проблему.У меня было перенаправление SSL в конфигурации Apache vhost.Использовал анализатор пакетов tcp, чтобы найти его.Как только я удалил перенаправление, я смог получить данные json:

$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
$decoded = json_decode($jsonInput,true);
print_r($decoded);

Спасибо всем, кто помог.

3 голосов
/ 17 марта 2011

Я вполне уверен, что ASIHTTPRequest по умолчанию используется для запроса GET. Вы пытаетесь отправить данные, поэтому я не думаю, что это будет работать.

Попробуйте использовать ASIFormDataRequest, который построен для данных POST. Или, по крайней мере, измените метод запроса на POST.

 [request  setRequestMethod:@"POST"];
...