2013-09-27 91 views
0

非常快速的問題。當使用請求發送PUT我發送以下內容:不需要的字符串格式

payload = {"host": "tst123:3306"} 
r = requests.put(url, data=payload) 

請求似乎被格式化主持人串因此API正在接收「tst123%3A3306」

是否有辦法防止這種情況?

任何想法非常讚賞

Ç

+0

您是否聽說過URL參數編碼? –

+0

http://en.wikipedia.org/wiki/URL-Encoding –

+0

如果添加downvote pease解釋原因 – Cathal

回答

1

在這種情況下,它不是參數,而是PUT數據。我用,而不是

payload = json.dumps({"host": "tst123:3306"})         
headers = {'content-type': 'application/json'}         
r = requests.put(url, data=payload, headers=headers) 

我可以理解爲什麼URL參數需要進行編碼,但爲什麼PUT數據解決了這個?

+0

這應該是對原始問題的編輯,因爲您在此處詢問新問題。要麼完全打開一個新的問題,要麼更新原來的問題。此外,您應該閱讀其他答案的內容,因爲您的新問題已經得到解答。 –

1

你看到的是一個完美的行爲。參數必須根據模式進行編碼

http://en.wikipedia.org/wiki/URL-Encoding 

這是網絡早期以來衆所周知的最佳實踐。

在應用程序端,您必須自己解碼參數。每種編程語言都有相應的模塊。在大多數情況下,所有的網絡框架都應該在內部進行解碼。

相關問題