curl — неверный запрос с Cloudant, PHP и запросом диапазона

Я пытаюсь получить запрос диапазона для работы с PHP cURL и Cloudant.

Я установил следующий поисковый индекс в своем Cloudant:

{
"_id": "_design/date",
"_rev": "20-822ebda694f4fb57dc0a48bf60f6570f",
"views": {},
"language": "javascript",
"indexes": {
"by_date": {
"analyzer": "classic",
"index": "function (doc) {\n  index(\"default\", doc.datequery);\n}"}
}
}

И затем в моем PHP-документе я делаю следующее:

$urlstuff = "[20180110 TO 20180119]";

$url = "https://user:[email protected]/db/_design/date/_search/by_date?q=".$urlstuff."&include_docs=true&limit=200";
$ch = curl_init();   // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);

И я получаю плохой запрос.

Если я заменю:

$urlstuff = "[20180110 TO 20180119]";

за

$urlstuff = "20180117";

Тогда я получаю хорошие результаты.

Это квадратные скобки портят мой cURL?
Что мне не хватает?

0

Решение

Да, вы на правильном пути. Если вы экранируете свою переменную (например, используя http://php.net/manual/en/function.curl-escape.php?) ваш запрос должен работать:

curl -g -X GET   'https://user:[email protected]/db/_design/date/_search/by_date?q=[20180110 TO 20180119]&include_docs=true&limit=20'{"error":"bad_request","reason":"Bad request"}

против

curl -X GET 'https://user:[email protected]/db/_design/date/_search/by_date?q=%5B20180110%20TO%2020180119%5D&include_docs=true&limit=20'

{"total_rows":1, ...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]