我正在用PHP语言实现一个与OAIPMH2兼容的数据提供程序(它从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代表acual 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响应。
我遗漏了什么?这可能是由于某些服务器端设置造成的吗?
(我自己没有访问服务器管理的权限,但我当然可以向托管提供商咨询。)
发布于 2020-05-10 16:59:39
我找到了问题所在。请求产生的XML格式不正确,因为它有一个ListRecords根元素,而不是适当的GetRecord,即它应该是:
<GetRecord>
<record>
<header>
...
</header>
</record>
</GetRecord>https://stackoverflow.com/questions/61694303
复制相似问题