2016-02-22 99 views
0

想知道如何對我的參數進行網址編碼,是嗎?網址編碼參數

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', 
       } 

按照這份指南:

To make the Authorization header, you simply append all the values starting with 「OAuth」. Each value must be URL encoded.

> 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" 
+0

*「這是正確的嗎?」* - ...它工作嗎? – jonrsharpe

+3

可能重複[如何在python中對url參數進行百分比編碼?](http://stackoverflow.com/questions/1695183/how-to-percent-encode-url-parameters-in-python) –

+0

我看到參數,但我不明白你是如何對它們進行URL編碼的。 – jwodder

回答

0

您應該使用urllib.quote_plus或urllib.parse.quote_plus在Python 3,這將處理它很好地爲您服務。

你想從您的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} 

不過,您可以想看看現有的實現,比如request-oauth1。見here

+0

嗨, 我得到TypeError:quote_from_bytes()期望的字節 – musss

+1

嘗試確保在params字典中的所有值轉換爲字符串 –

+0

我應該嘗試for語句並將列表中的列轉換爲str(i)? – musss