2014-09-26 40 views
1

我知道我可以使用在捲曲的請求與正常數據混合JSON在bash

curl --data "param1=value1&param2=value2" http://hostname/resource 

curl --request POST https://$url?param1=value1&param2=value2 

但是,我需要做的,如果參數1是值和參數2是一個JSON?

這是行不通的(TM),如果我只是折騰JSON在那裏,甚至採用可變

$json='{"data":"value"}' 
curl --request POST https://$url?param1=value1&param2=$json 

什麼訣竅嗎? 請注意,我只需要撥打一個電話。

謝謝!

+0

你能更具體地瞭解它不起作用嗎?你有錯誤嗎?數據是否未到達服務器? – ebo 2014-09-27 15:13:33

回答

1

好吧,如果我們什麼都逃不過(使用python)這裏是什麼樣子

>>> x 
'{"data": "value"}' 
>>> urllib.urlencode({'param1':'value1', 'param2':x}) 
'param2=%7B%22data%22%3A+%22value%22%7D&param1=value1' 

或者,使用捲曲選項

curl localhost:8080 --data-urlencode 'param1={"data":"value"}' 

將發送給服務器

param1=%7B%22data%22%3A%22value%22%7D 

你可能注意到第一個版本有一個+,它可能來自json編碼的空間,不確定它是否和rks或者它是否可以被刪除

+0

是的,訣竅在於對整個JSON進行網址編碼。我正在使用另一種方式來做到這一點,但你的想法是正確的。 – Daniel 2014-10-29 13:44:54