如何使用CURL命令使用Web服务?

时间:2013-06-18 04:06:07

标签: linux web-services unix ubuntu geocoding

我正在尝试使用unix CURL命令来使用webservices,但不知何故我收到请求被拒绝错误。

我正在尝试使用此网络服务网址

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

我可以在浏览器中打开上面的网址,我可以看到内容。

现在我正在尝试使用CURL命令使用相同的Web服务,但它对我不起作用。

我正在尝试这样的事情 -

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

我在做什么事吗?我需要提取text portion of distance object

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:2)

&字符在shell中是特殊的;所以命令执行正常,只是被发送到后台。这些数字[1] 4373 [2] 4374 [3] 4375是发送到后台的进程ID。稍后您可以告诉他们已完成[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

要在shell中解析json,您可以使用jsawk之类的工具。但是,我更喜欢更简单的方法:

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

答案 1 :(得分:0)

Curl只适用于通过URL查看和测试服务器中的数据。 要使用Web服务本身,您需要一种编程语言,它可以解析HTTP请求响应中的内容JSON(或其他),例如您在此处粘贴的URL(类型为语言,如Arrays,Dicts或其他)可以工作。