Я использую AFNetworking для отправки массива, содержащего контактные данные в устройстве на сервер. Ниже приведен мой код.
NSDictionary *parameters = @{@"UserContacts": contactsArray};//contactsArray is NSMutableArray
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:baseUrl parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"RESPONSE : %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error.localizedDescription);
}];
Ответ, который я получил, это
ОТВЕТ: "не удалось"
Примечание. Неопределенный индекс: UserContacts в C:\xampp\htdocs\creator\php\controller\contactsync.php в строке 101
Код php приведен ниже
public function insertios(){
if(!isset($_REQUEST['UserContacts'])){
echo json_encode('failed');
$contact = $_REQUEST['UserContacts'];
echo $contact;
}else{
echo json_encode('Success');
}
}
Скажите, пожалуйста, где я ошибся.
Вы должны использовать php://input
поток только для чтения для доступа к пост-данным вместо $_REQUEST
как это
<?php
$postdata = file_get_contents('php://input');
?>
После этого вы можете декодировать ваши данные для записей в зависимости от типа контента.
Вы использовали NSDictionary для привязки данных, которые обрабатываются как строка json на сервере PHP, поэтому вам нужно читать данные запроса через флеш-поток.