Проверка поставщика данных OAI-PMH завершилась неудачно для одного запроса POST, несмотря на то, что он работает с curl - PullRequest
0 голосов
/ 09 мая 2020

Я реализую поставщика данных, совместимого с OAI-PMH2, в PHP (который извлекает данные из базы данных MySQL), и я пытаюсь его проверить, но застрял только с одной ошибкой, которая мешает успешному выполнению.

Ошибка в некоторой степени связана с тем, что описано в этом вопросе , однако в моем случае запрос POST с verb=Identify проходит успешно, а второй не выполняется.

Что еще более неприятно, тот же запрос успешно обрабатывается, когда я отправляю его с помощью curl, т.е. он выводит правильно сформированный XML.

Чтобы быть более конкретным c, я получаю ошибку следующее:

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 Ответ

0 голосов
/ 10 мая 2020

Я нашел проблему. XML, полученный в результате запроса, не был правильно сформирован, поскольку он имел элемент ListRecords root, а не соответствующий GetRecord, т.е. он должен был быть:

<GetRecord>
  <record>
   <header>
   ...
   </header>
  </record>
</GetRecord>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...