我试图将变量传递给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
,然后传递这样的变量,但这也会导致相同的错误。
正确方向上的一点很棒,谢谢!
答案 0 :(得分:1)
从以下内容中删除单引号:
data =' {" asset_tag":" test1"," assigned_to":" test2", "公司":" test3"," serial_number":serial}'
使用
data = {" asset_tag":" test1"," assigned_to":" test2", "公司":" test3"," serial_number":serial}
答案 1 :(得分:1)
不是以字符串形式发送请求有效负载主体,而是以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})
答案 2 :(得分:1)
而不是传递data = data,而是将data作为dict并将其作为json = data传递。