Получение записей CloudKit по имени и запросу в PHP

У меня есть приложение, использующее CloudKit, и я пытаюсь создать простой веб-интерфейс для извлечения данных из CloudKit, чтобы пользователи могли просматривать информацию. Вход в систему работает отлично, но я не могу найти примеры того, как структурировать запросы на записи/запросы и записи/поиск.

Для записей/поиска я отправляю сообщение на аналогичный URL-адрес:

https://api.apple-cloudkit.com/database/1/iCloud.com.[mycontainer]/development/private/records/lookup?ckAPIToken=[myToken]&ckSession=[myAuthenticatedSession]

Однако, используя cURL и PHP, я не могу правильно "записать" POST. Сообщения об ошибках не содержат достаточно подробной информации. Apple не предоставила образцы в документации. Каков правильный способ записи POST, чтобы получить действительный ответ от CloudKit?


person Dexter    schedule 30.08.2015    source источник


Ответы (1)


Вы можете увидеть множество примеров и четкое объяснение Здесь.

Почтовый запрос должен быть в JSON, например:

{ 
    "operationType":"update",
    "record" : {
        "recordType":"Artist",
        "fields": {
             "firstname" : {"value" : "Chen"},
        }
        "recordName" : "Mei Chen"
    },
}

это объект JSON для выполнения операции. То, что вы ищете, это поиск, для этого требуется recordName и, возможно, desiredKeys, оставив desiredKeys пустым, вы получите их все. Итак, ваш json будет выглядеть так:

{ 
    "recordName":"Mei Chen"
}

в PHP вы можете легко сделать это с массивом

$request = array();
$request['recordName'] = "Mei Chen";
$request_json = json_encode($request);

Используя свой $request_json, вы можете опубликовать это, используя PHP curl, например:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_json);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($request_json))                                                                       
);            
person Bas van Stein    schedule 22.09.2015
comment
Предоставленная ссылка больше не ведет к приведенному примеру. - person Peter Wiley; 18.04.2017