iOS 9.1 вызвала ошибку при подключении JSON NSURL к странице PHP

До iOS 9.1 мое приложение успешно подключалось к файлу .php в Интернете, чтобы получить некоторую информацию о базе данных. Все это сообщение было завершено с использованием JSON хранить информацию между двумя. Я знаю, есть проблема, которая, как представляется, связана с пакетом, который отправляется в мой файл .php.

if($_POST == null){ // Check for proper posting.

$handle  = file_get_contents('php://input');
$body = json_decode($handle, true);
}
else{
$body == $_POST;
}

Код выше, кажется, является точкой отказа. Я получаю $ _POST это не нуль.

-(void)postAuthorize:(NSString*)code :(NSString*)phone{

//build up the request that is to be sent to the server
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.example.com/ex.php"]];

[request setHTTPMethod:@"POST"];
[request addValue:@"postValues" forHTTPHeaderField:@"METHOD"];

//create data that will be sent in the post
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setValue:code forKey:@"authorize"];
[dictionary setValue:phone forKey:@"device"];

NSLog(@"Dictionary: %@", dictionary);

//serialize the dictionary data as json
NSData *data = [[dictionary copy] JSONValue];

NSLog(@"Data: %@", data);

[request setHTTPBody:data]; //set the data as the post body
[request addValue:[NSString stringWithFormat:@"%lu",(unsigned long)data.length] forHTTPHeaderField:@"Content-Length"];
NSLog(@"data length: %lu", (unsigned long)data.length);
NSLog(@"Request body %@", [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]);
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(!connection){
NSLog(@"Connection Failed");
}

}

Выше код на iPhone. Я проверил JSON в теле URL Подключение, чтобы убедиться, что оно неправильно отформатировано. Кажется, нет.

Это ошибка, которую я получаю:

Домен = NSCocoaErrorDomain Код = 3840.

Но я думаю, что это только потому, что код PHP не работает. Если я пропущу приведенный выше код и просто отправлю обратно статическое значение, все пройдет нормально.

Мне действительно нужна помощь Пожалуйста, если кто-то может указать, что не так. Я не знаю, почему это работало в течение 2 лет, а теперь сломалось с iOS 9.0 -> 9.1

Проблема возникает в моем PHP. Я предполагаю, что Apple изменила что-то в 9.0 / 9.1 с помощью URL-соединения, которое изменило метод $ _POST.

$handle  = file_get_contents('php://input');
$body = json_decode($handle, true);

2

Решение

измените свой php код на этот

$handle  = file_get_contents('php://input');

if($handle == null || $handle == ""){
$body = $_POST;
}else{
$body = json_decode($handle);
}
4

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

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

По вопросам рекламы [email protected]