Проверка поставщика данных OAI-PMH завершилась неудачно для одного запроса POST, несмотря на то, что он работает с curl
Я реализую в PHP поставщика данных, совместимый с OAI-PMH2 (который извлекает данные из базы данных MySQL), и я пытаюсь его проверить, но застрял только с одной ошибкой, которая препятствует успешной проверке.
Ошибка в некоторой степени связана с тем, что описано в этом вопросе, однако в моем случае запрос POST сverb=Identify
проходит успешно, а второй - нет.
Что еще больше раздражает, тот же запрос обрабатывается успешно, когда я отправляю его с curl
, т.е. выводит правильно сформированный XML.
Чтобы быть более конкретным, я получаю следующую ошибку:
REQUEST http://www.mydataprovider/my_oaipmh2.php POST
identifier:oai:www.mydataprovider/my_oaipmh2.php:1
metadataPrefix:oai_dc verb:GetRecord
FAIL POST test 2 for GetRecord was unsuccessful, got neither a valid response nor an error
(www.mydataprovider / my_oaipmh2.php, конечно, означает фактический URL.)
Итак, я пробовал выполнить (несколько раз) один и тот же запрос POST через curl
, как это:
curl --data "verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:www.mydataprovider/my_oaipmh2.php:1" http://www.mydataprovider/my_oaipmh2.php
и он всегда успешно возвращает правильный ответ XML с первой записью.
Что мне не хватает? Может быть, это связано с некоторыми настройками на стороне сервера?
(У меня нет доступа к управлению сервером, но я, конечно, могу спросить у хостинг-провайдера.)
1 ответ
Я нашел проблему. XML, полученный в результате запроса, сформирован неправильно, так как онListRecords
корневой элемент, а не соответствующий GetRecord
, т.е. должно было быть:
<GetRecord>
<record>
<header>
...
</header>
</record>
</GetRecord>