URL编码参数

时间:2016-02-22 21:24:18

标签: python

想知道如何对我的参数进行url编码,这是对的吗?

 params = {'oauth_version': "1.0", 
              'oauth_nonce': oauth.generate_nonce(), 
              'oauth_timestamp': int(time.time()),
              'oauth_consumer_key': CONSUMER_KEY,
              'oauth_token': access_key,
              'oauth_nonce' : nonce, 
              'oauth_consumer_key': consumer.key,
              'oauth_signature': 'el078a5AXGi43FBDyfg5yWY',
              }

遵循本指南:

  

要制作Authorization标头,只需附加所有值即可   以“OAuth”开头。每个值都必须进行URL编码。

> 1. Authorization: OAuth oauth_callback="http%3A%2F%2Fwww.website-tm-access.co.nz%2Ftrademe-callback",
> oauth_consumer_key="C74CD73FDBE37D29BDD21BAB54BC70E422",
> oauth_version="1.0", oauth_timestamp="1285532322",
> oauth_nonce="7O3kEe", oauth_signature_method="HMAC-SHA1",
> oauth_signature="5s3%2Bel078a5AXGi43FBDyfg5yWY%3D"

1 个答案:

答案 0 :(得分:0)

您应该在python 3中使用urllib.quote_plus或urllib.parse.quote_plus,它可以很好地为您处理。

您希望从params构建授权标头的方式如下:

(python3版)

import urllib
authorization = 'OAuth ' + ', '.join([key + '="' + urllib.parse.quote_plus(str(value)) + '"' for key, value in params.items()])
http_headers = {'Authorization': authorization}

(python2版本)

import urllib
authorization = 'OAuth ' + ', '.join([key + '="' + urllib.quote_plus(str(value)) + '"' for key, value in params.items()])
http_headers = {'Authorization': authorization}

但是,您可能希望查看现有的实现,例如requests-oauth1。请参阅here