2017-04-11 68 views
3

我一直在尋找類似地雷的許多問題,但我無法找到一個解決方案。蟒蛇請求接線柱400錯誤

我使用請求執行POST請求。我在請求中嘗試了很多組合,但沒有返回201 OK。

這裏是我的代碼:

import json 
import requests 

if __name__ == '__main__': 

    headers = {'content-type' : 'application/json'} 
    url = "http://myserver/ext/v3.1/test_device" 
    message = {"atribute_a": "value", "atribute_b": "valueb"} 
    params = {"priority":"normal"} 

    r = requests.post(url, params=params, headers=headers, data = json.dumps(message)) 
    print(r) 

我也試過withou json.dumps但它也給了我400錯誤的請求。我也試過直接添加PARAMS到URL,如:?...優先級=正常,但沒有成功。

+0

是不是有應該是requests.post中params和headers之間的逗號? –

+0

是的@GauravOjha當然。我用逗號測試。只是一個錯誤的副本和過去 – lmbcerqueira

+0

您是否嘗試直接使用data = message而不是json.dumps? –

回答

4

基礎上的評論,您的服務器實際上是預期數據作爲字符串化JSON對象。 至於PARAMS而言,它會最有可能幫助,如果他們聲明爲元組的元組(或類型的字典詞典)

請嘗試以下 -

headers = { 
    'content-type': 'application/json', 
} 

params = (
    ('priority', 'normal'), 
) 

data = { 
    "atribute_a": "value", 
    "atribute_b": false 
} 

requests.post(url, headers=headers, params=params, data=str(data))