При создании HTTP-запроса добавьте Prefer: odata.include-annotations = "*" в свои заголовки HTTP-запроса. Таким образом, ответ будет иметь не только поле _ [Имя поля] _value с идентификатором, но также _ [Имя поля] _value@Microsoft.Dynamics.CRM.lookuplogicalname с логическое имя, которое вы ищете.
Это пример ответа на запрос, запрашивающий parentcustomerid определенного контакта без заголовка:
{
"@odata.context": "https://[Organization URI]/api/data/v9.0/$metadata#contacts(_parentcustomerid_value)",
"value": [
{
"_parentcustomerid_value": "bdeb86af-7e1c-e811-a837-000d3ac085f9",
"contactid": "b050f3bb-dbf7-e811-a98a-000d3ac02bae"
}
]
}
И это пример ответа для того же запрос с добавленным заголовком:
{
"@odata.context": "https://[Organization URI]/api/data/v9.0/$metadata#contacts(_parentcustomerid_value)",
"value": [
{
"_parentcustomerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentcustomerid_account",
"_parentcustomerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
"_parentcustomerid_value": "bdeb86af-7e1c-e811-a837-000d3ac085f9",
"contactid": "b050f3bb-dbf7-e811-a98a-000d3ac02bae"
}
]
}
Вы, вероятно, хотите flush()
. Однако PHP может использовать выходную буферизацию. Существует несколько способов, которыми это может изменить вещи, но короче говоря Вы можете flush()
, затем ob_flush()
.
Обратите внимание также, что некоторые браузеры не начнут отображать что-либо, пока орган по ответу не будет содержать определенное количество данных - как 256 или 1 024 байта. Я видел приложения, прежде чем те данные клавиатуры с 1 024 символами долго прокомментируют около верхней части страницы, прежде чем они сделают сброс. Это - определенный взлом, но необходимый.
Это относится к Internet Explorer и Safari IIRC.
Так,
Мне нравится просто использовать
while (ob_get_level()) ob_end_flush();
около запуска моего сценария где-нибудь, и затем просто
flush();
каждый раз, когда я хочу сбросить. Это предполагает, что Вы не хотите выходной буферизации вообще, даже если она была настроена перед Вашим сценарием (такой как в PHP.ini или htaccess конфигурации).
Можно попытаться использовать сброс () после каждого эха, но даже который не гарантирует запись клиенту в зависимости от веб-сервера, который Вы выполняете.
Необходимо смочь использовать что-то вроде этого, чтобы вынудить вывод быть отправленным immeadiately. Поместите его в часть кода, который Вы хотите, чтобы вывод был отправлен.
flush();
ob_flush();