2015-04-23 2 views
0

Как название говорит, я пытаюсь разобрать URL вроде следующего:как разобрать URL-адрес с настройками json?

https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles 

локон выдает следующее сообщение об ошибке:

$ curl https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles 
-bash: !search={/"s1/": event not found 

модуль URI рубина не может справиться с этим либо, метание a bad URI(is not URI?) ошибка.

Одиночные кавычки не работают, выход из двойных кавычек не работает (одни и те же ошибки) - конечно, есть способ сделать это, но я не могу его найти.

+0

Вы не получите ожидаемые результаты с помощью такого URL-адреса. Часть URL-адреса, начинающегося с символа '#' («хэш» или «идентификатор фрагмента»), не будет отправлена ​​на сервер с помощью curl - он будет запрашивать только 'https: // somesite.com/search /'. В [RFC-3986] (http://tools.ietf.org/html/rfc3986#section-3.5) «идентификатор фрагмента отделен от остальной части URI до разыменования и, таким образом, идентифицирующая информация в пределах сам фрагмент разыменовывается только пользовательским агентом ». –

+0

достаточно справедливо - спасибо за ваше время! – dax

ответ

0

Как я уже отмечал выше, вы не будете получать ожидаемые результаты с URL-адресом, который имеет данные в «хэш» или «идентификатор фрагмента», то есть часть после #, поскольку эта часть URL-адрес не отправляется на сервер зависанием (или веб-браузерами). Учитывая URL-адрес, как http://example.com/#!foo=bar, завиток будет запрашивать только http://example.com/. В RFC-3986 «идентификатор фрагмента отделен от остальной части URI до разыменования, и, таким образом, идентифицирующая информация внутри самого фрагмента разыменована исключительно пользовательским агентом».

Однако для других URL-адресов вы можете использовать HEREDOC с xargs. Параметр Curl's --globoff не позволяет интерпретировать скобки или фигурные скобки (иначе foo{bar,baz} сделает завиток, сделав два запроса, один для foobar и один для foobaz).

$ xargs <<END curl --globoff 
https://somesite.com/search/?search={"s1":55,"s2":90,"r1":2,"r2":4,"f1":450,"f2":775,"c":3}&x=1 
END 
+0

, который «работает» в том, что он что-то возвращает, но только изгоняет. я положу url, на котором я фактически использую, чтобы вы могли убедиться сами. – dax

+0

Я забыл о поведении curl с фигурными скобками. Я обновил свой ответ. –

Смежные вопросы