Проверка поставщика данных 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>
Другие вопросы по тегам