首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从具有许多保留字符的URL中通过curl或HTTParty从Ruby检索

从具有许多保留字符的URL中通过curl或HTTParty从Ruby检索
EN

Stack Overflow用户
提问于 2014-04-01 01:46:16
回答 1查看 153关注 0票数 0

我有一个数字对象标识符,其中包含一组URI保留字符:

10.1002/(SICI)1096-9861(19960304)366:2<270::AID-CNE7>3.0.CO;2-2

我试图使用这个DOI从DOI解析API中提取书目数据。API的URL方案是http://dx.doi.org/DOIHERE。还可以包括一些标头来指定响应的格式。当我将URL http://dx.doi.org/10.1002/(SICI)1096-9861(19960304)366:2<270::AID-CNE7>3.0.CO;2-2直接粘贴到Chrome地址栏中时,它可以正常工作,并被重定向到适合本文的页面。但是,无论是在命令行的curl中还是在HTTParty脚本中,或者使用Ruby,我都无法使用这个URL获得相同的响应。我已经尝试过手动对所有特殊字符进行%编码,并且有相同的问题:

代码语言:javascript
复制
url1 = "http://dx.doi.org/10.1002/(SICI)1096-9861(19960304)366:2<270::AID-CNE7>3.0.CO;2-2"
url2 = "http://dx.doi.org/10.1002%2F%28SICI%291096-9861%2819960304%29366%3A2%3C270%3A%3AAID-CNE7%3E3.0.CO%3B2-2"
headers = { "Accept" => 'application/x-bibtex;q=1.0' }

`curl -LH "Accept: application/x-bibtex;q=1.0" -i #{url1}`  # empty string response
`curl -LH "Accept: application/x-bibtex;q=1.0" -i #{url2}`  # 504 Gateway timeout error
HTTParty.get url1, headers: { "Accept" => 'application/x-bibtex;q=1.0' }  # Ruby throws InvalidURI error
HTTParty.get url2, headers: { "Accept" => 'application/x-bibtex;q=1.0' }  # blank response body

此外,在URI.escape上运行url1只转义尖括号,保留括号、分号和冒号,尽管它们是保留字符。有人能解释一下这里发生了什么,以及我如何编程地从这个URL中检索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 07:22:05

从请求中删除H "Accept: application/x-bibtex;q=1.0"。在浏览链接时,没有指定此标头。因此,不需要从卷曲中指定。

下面一个和我很好地合作:

代码语言:javascript
复制
curl -LH  -i -v "http://dx.doi.org/10.1002%2F%28SICI%291096-9861%2819960304%29366%3A2%3C270%3A%3AAID-CNE7%3E3.0.CO%3B2-2"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22775353

复制
相关文章

相似问题

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