OAI-PMH数据提供程序验证对于单个POST请求失败,尽管它与curl一起使用

问题描述 投票:0回答:1

我正在用PHP实现兼容OAI-PMH2的数据提供程序(该数据提供程序从MySQL数据库检索数据,并且我试图对其进行验证,但仅遇到一个错误,阻止了成功验证。

错误与this question中描述的内容有些相关,但是在我的情况下,带有verb=Identify的POST请求成功通过,而第二个失败。

更令人烦恼的是,当我使用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。)

因此,我尝试通过curl执行(几次)相同的POST请求,如下所示:

curl --data "verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:www.mydataprovider/my_oaipmh2.php:1" http://www.mydataprovider/my_oaipmh2.php

并且它总是成功地返回带有第一条记录的正确XML响应。

我想念的是什么?这可能是由于某些服务器端设置引起的吗?(我自己没有访问服务器管理的权限,但是我可以问托管服务提供商。)

php xml oai oai-pmh
1个回答
0
投票

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

<GetRecord>
  <record>
   <header>
   ...
   </header>
  </record>
</GetRecord>
© www.soinside.com 2019 - 2024. All rights reserved.