2013-06-18 3 views
1

Я пытаюсь использовать webservices с помощью команды unix CURL, но почему-то я получаю запрос об ошибке.Как использовать webservice с помощью команды CURL?

Я пытаюсь потреблять этот WebService url-

http://maps.googleapis.com/maps/api/distancematrix/json?origins=95112&destinations=94000&mode=bicycling&sensor=false

Я могу открыть выше URL в браузере, и я могу видеть содержимое.

Теперь я пытаюсь использовать один и тот же веб-сервис с помощью команды CURL, но он не работает для меня.

Я пытаюсь что-то вроде this-

curl http://maps.googleapis.com/maps/api/distancematrix/json?origins=95050&destinations=94087&mode=bicycling&sensor=false

Что плохого я делаю? Мне нужно извлечь text portion of distance object.

Может ли кто-нибудь помочь мне с этим?

ответ

2

Характер & является особым в оболочке; поэтому команда выполняется отлично, просто отправляясь на задний план. Эти номера [1] 4373 [2] 4374 [3] 4375 являются идентификаторами процесса, которые отправляются на задний план. Вы можете сказать позже, что они закончены с [1] Done. Чтобы этого избежать, вы должны указать URL-адрес.

Вам также необходимо предоставить опцию -o для завивки; потому что я предполагаю, что вы пытаетесь сохранить файл в формате JSON для последующей обработки:

curl -o bikes.json "http://maps.googleapis.com/maps/api/...." 

Вы можете также использовать wget, который предназначен специально для этого:

wget "http://maps.googleapis.com/maps/api/...." -O bikes.json 

Или, мой личный фаворит httpie:

http "http://maps.googleapis.com/maps/api..." > bikes.json 

Чтобы разобрать json на оболочке, вы можете использовать такой инструмент, как jsawk. Тем не менее, я предпочитаю гораздо проще:

curl -s "http://www.example.com/..." | python -mjson.tool | grep "distance"

+0

: Спасибо Бурхан за предложение. Теперь он работает отлично. Любая идея, если я могу получить текстовую часть объекта расстояния с помощью curl или некоторой дополнительной обработки напрямую? Или что это самый простой способ получить это? – ferhan

+0

Что такое mjson.tool здесь? pardon my neorance – ferhan

+0

'-m' - это право на python, а' json' - это библиотека ('.tool' - это способ напрямую использовать функциональность библиотеки). В StackOverflow есть красиво скомпилированный [список этих] (http://stackoverflow.com/questions/14545001/what-tools-are-available-in-python-standard-library). –

0

Curl работает только для просмотра и тестирования данных на сервере через URL-адрес. Чтобы использовать вебсервис, вам нужен язык программирования, который анализирует содержимое JSON (или другого) в ответе HTTP-запроса, например URL-адрес, который вы вставляете сюда в тип (на языке, таком как Arrays, Dicts или что-то еще) которые могут быть обработаны.

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