卷曲请求与浏览器

时间:2015-10-13 15:59:48

标签: api http curl

我试图从ESA访问API。详情here 使用curl时,

curl -svgu <user>:<password> "https://scihub.esa.int/dhus/odata/v1/Products?$filter=year(IngestionDate) eq 2015 and month(IngestionDate) eq 10 and day(IngestionDate) eq 10"

回复时间错误(2014年)

在chrome上使用相同的链接产生预期的结果(传递日期的文件)

https://scihub.esa.int/dhus/odata/v1/Products?$filter=year(IngestionDate) eq 2015 and month(IngestionDate) eq 10 and day(IngestionDate) eq 10

我尝试删除空格并使用

`"https://scihub.esa.int/dhus/odata/v1/Products?$filter=year(IngestionDate)%20eq%202015%20and%20month(IngestionDate)%20eq%2010%20and%20day(IngestionDate)%20eq%2010"`

on curl。

有任何建议或想法吗?您可以使用这些链接进行尝试。

编辑: 根据{{​​3}}的建议, curl -G -gu:&#34; Pafjo&#34; --data-urlencode&#39; $ filter = year(IngestionDate)eq&#39;&#34; $ YEAR和month(IngestionDate)eq $ MONTH和day(IngestionDate)eq $ DAY&#34;这就是答案

2 个答案:

答案 0 :(得分:1)

Curl不会对您的网址进行网址编码,因此您需要告诉它哪个部分应该进行网址编码。

试试这个,看看你是否得到正确答案:

curl -G -svgu  <user>:<password> "https://scihub.esa.int/dhus/odata/v1/Products" --data-urlencode '$filter=year(IngestionDate) eq 2015 and month(IngestionDate) eq 10 and day(IngestionDate) eq 10'

你的第二个curl命令失败的原因是你在双引号内有$ filter。因此,当您执行请求时,shell将使用值替换您的变量。这可以通过使用单引号或转义美元符号来解决。

答案 1 :(得分:0)

  1. 卷曲参数可能容易从您正在使用的shell进行解释。您可能需要转义正则表达式字符,在这种情况下(和)。
  2. 网址中不允许使用空格。您应该用%20替换它们。