首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAI-PMH数据提供程序验证对于一个POST请求失败,尽管它使用curl

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

Stack Overflow用户
提问于 2020-05-09 17:09:58
回答 1查看 51关注 0票数 0

我正在用PHP语言实现一个与OAIPMH2兼容的数据提供程序(它从MySQL数据库中检索数据),并试图对其进行验证,但只有一个错误阻止了成功的验证。

这个错误在某种程度上与this question中描述的内容有关,但是在我的例子中,使用verb=Identify的POST请求成功通过,而第二个请求失败。

更令人恼火的是,当我用curl发送请求时,同样的请求被成功地处理了,也就是说,它输出了一个格式正确的XML。

更具体地说,我得到的错误如下:

代码语言:javascript
复制
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请求,如下所示:

代码语言:javascript
复制
curl --data "verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:www.mydataprovider/my_oaipmh2.php:1" http://www.mydataprovider/my_oaipmh2.php

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

我遗漏了什么?这可能是由于某些服务器端设置造成的吗?

(我自己没有访问服务器管理的权限,但我当然可以向托管提供商咨询。)

EN

回答 1

Stack Overflow用户

发布于 2020-05-10 16:59:39

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

代码语言:javascript
复制
<GetRecord>
  <record>
   <header>
   ...
   </header>
  </record>
</GetRecord>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61694303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档