2012-04-12 3 views
0

私はcurlのデータをPOSTしようとしています。ソースデータはJSONですが、コンテンツタイプapplication/x-www-form-urlencodedで転記します。私はこのようにそれを行うにしようとしています:jsonデータをx-www-form-urlencodedとしてエンコードする

curl -X POST $URL --data-urlencode "@$data.json" --header "Content-Type: application/x-www-form-urlencoded" 

これはdata.jsonです:

{ 
    "action"  : "deploy_from_scratch_with_bundle", 
    "pusher"  : { "email" : "[email protected]" }, 
    "ref"   : "refs/heads/master", 
    "repo_choice" : "LOCAL" 
} 

しかし、これは動作しない:urlparse.parse_qs(パイソン)とValueError文句を言っています。 (parse_qs前)

受信したデータは次のとおりです。

%7B%0A%20%20%22action%22%20%20%20%20%20%20%3A%20%22deploy%5Ffrom%5Fscratch%5Fwith%5Fbundle%22%2C%0A%20%20%22pusher%22%20%20%20%20%20%20%3A%20%7B%20%22email%22%20%3A%20%22my%40email%2Ecom%22%20%7D%2C%0A%20%20%22ref%22%20%20%20%20%20%20%20%20%20%3A%20%22refs%2Fheads%2Fmaster%22%2C%0A%20%20%22repo%5Fchoice%22%20%3A%20%22LOCAL%22%0A%7D%0A 

私はここで間違って何をしているのですか?

あなたはそのデータをUNQUOTEするurllib2のからにunquote使用する必要があります
+0

あなたは、受信したデータの二分検索を実行した場合、あなたは特別 'ValueError'を送出を投げされている文字またはシーケンスを絞り込むことができますか? – sarnold

答えて

0

In [10]: urllib2.unquote("%7B%0A%20%20%22action%22%20%20%20%20%20%20%3A%20%22deploy%5Ffrom%5Fscratch%5Fwith%5Fbundle%22%2C%0A%20%20%22pusher%22%20%20%20%20%20%20%3A%20%7B%20%22email%22%20%3A%20%22my%40email%2Ecom%22%20%7D%2C%0A%20%20%22ref%22%20%20%20%20%20%20%20%20%20%3A%20%22refs%2Fheads%2Fmaster%22%2C%0A%20%20%22repo%5Fchoice%22%20%3A%20%22LOCAL%22%0A%7D%0A") 
Out[10]: '{\n "action"  : "deploy_from_scratch_with_bundle",\n "pusher"  : { "email" : "[email protected]" },\n "ref"   : "refs/heads/master",\n "repo_choice" : "LOCAL"\n}\n' 
関連する問題