Я пытаюсь создать в iPad магазин покупок в приложении.Как часть этой системы, я использую сервер для размещения содержимого IAP и обслуживаю соответствующие активы при получении действительного чека.Я делаю так, чтобы iPad отправлял HTTP-запрос POST на мой сервер, а тело сообщения - это данные чека.
Вот моя проблема: по какой-то причине сервер интерпретирует запрос POST какПОЛУЧИТЕ и по этой причине вход php: // всегда пуст.Что действительно странно, так это то, что он работает в моей локальной среде разработки (Windows, Apache, PHP 5.3), но не на моем общем размещенном производственном сервере (Linux, Apache, PHP 5.2).
Вот соответствующий код изiPad:
NSURL* url = [[NSURL alloc] initWithScheme:@"http" host: host path: path];
NSMutableURLRequest* theRequest = [[NSMutableURLRequest alloc] initWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval: 60.0f];
[url release];
[theRequest setHTTPMethod: @"POST"];
[theRequest setValue: @"application/x-www-form-urlencoded" forHTTPHeaderField: @"Content-Type"];
NSMutableData* postBody = [[NSMutableData alloc] init];
NSString* receiptString = [self newEncodedString:transaction.transactionReceipt];
[postBody appendData:[receiptString dataUsingEncoding:NSUTF8StringEncoding]];
[receiptString release];
NSString* postLength = [[NSString alloc] initWithFormat: @"%d", [postBody length]];
[theRequest setValue: postLength forHTTPHeaderField: @"Content-Length"];
[postLength release];
[theRequest setHTTPBody: postBody];
[postBody release];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
...
А вот код сервера PHP:
$httpRequestBody = '';
$fh = @fopen('php://input', 'r');
if ($fh)
{
while (!feof($fh)) {
$s = fread($fh, 1024);
if (is_string($s)) {
$httpRequestBody .= $s;
}
}
fclose($fh);
} else {
$statusCode = 1;
}
На рабочем сервере $httpRequestBody
оказывается пустым.Когда я звоню phpinfo()
, REQUEST_METHOD является GET.Любая помощь с благодарностью!