0

我在 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 响应。

我错过了什么?这可能是由于某些服务器端设置造成的吗?
(我自己无权访问服务器管理,但我当然可以询问托管服务提供商。)

4

1 回答 1

0

我发现了问题。请求产生的 XML 格式不正确,因为它有一个ListRecords根元素,而不是适当的GetRecord,即它应该是:

<GetRecord>
  <record>
   <header>
   ...
   </header>
  </record>
</GetRecord>
于 2020-05-10T08:59:38.800 回答