До 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);
измените свой php код на этот
$handle = file_get_contents('php://input');
if($handle == null || $handle == ""){
$body = $_POST;
}else{
$body = json_decode($handle);
}
Других решений пока нет …