簡體   English   中英

在 Python 中的 requests.post() 中發送變量作為數據參數

[英]Sending a variable as data parameter in requests.post() in Python

我試圖將一個變量傳遞給 requests.post() 中的數據字段,但我繼續收到錯誤消息,

  Error Response: {'error': {'message': 'Exception while reading request', 
'detail': 'Cannod decode: java.io.StringReader@1659711'}, 'status': 'failure'}

這是我的代碼

#Fill array from CSV
temp=[]
for row in csv.iterrows():
    index, data = row
    temp.append(data.tolist())


#Create new asset for all assets in CSV
for index, row in enumerate(temp):
    make = temp[index][0]
    serial = str(temp[index][1])
    date = str(temp[index][2])
    response = requests.post(url, auth=(user, pwd), headers=headers, 
    data='{"asset_tag":"test1", "assigned_to":"test2", 
    "company":"test3", "serial_number":serial}')

我最初嘗試直接從 CSV 使用

str(temp[index][1])

這不起作用,所以我嘗試將str(temp[index][1])分配給變量serial然后像這樣傳遞變量,但這也會導致相同的錯誤。

指向正確方向的點會很棒,謝謝!

不是以字符串形式發送請求負載正文,而是以 json 形式傳遞它。 requests.post 接受數據變量中的字符串和 json 變量中的 json。 我在嘗試通過 Python 對 ServiceNow 實例進行第一次 REST 調用時遇到了同樣的問題。 希望這可以幫助。

response = requests.post(url, auth=(user, pwd), headers=headers, 
    json={"asset_tag":"test1", "assigned_to":"test2", 
    "company":"test3", "serial_number":serial})

從以下內容中刪除單引號:

data='{"asset_tag":"test1", "assigned_to":"test2", 
       "company":"test3", "serial_number":serial}' 

data = {"asset_tag":"test1", "assigned_to":"test2", 
        "company":"test3", "serial_number":serial} 

與其傳遞 data=data,不如將數據作為 dict 並將其作為 json=data 傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM