0

私はいくつかのデータでPOSTしようとしてcurlいます。ソースデータはJSONですが、content-typeで投稿したいと思いapplication/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" : "my@email.com" },
  "ref"         : "refs/heads/master",
  "repo_choice" : "LOCAL"
}

しかし、これは機能していません:urlparse.parse_qs(python)は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

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

4

1 に答える 1

0

そのデータの引用符を解除するには、urllib2から引用符を外すを使用する必要があります。

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" : "my@email.com" },\n  "ref"         : "refs/heads/master",\n  "repo_choice" : "LOCAL"\n}\n'
于 2012-04-12T01:51:10.777 に答える