Python 如何在PUT请求中传递两个对象数据?

Python 如何在PUT请求中传递两个对象数据?,python,http,request,python-requests,Python,Http,Request,Python Requests,我在Delphi中编写了以下方法: 函数acceptPutNF(const aJSONObject:TJSONObject;const aJSONArray:TJSONArray):TJSONObject 我试图发送一个PUT请求,但我不知道如何使用python指定第二个参数/对象数据aJSONArray。我试过这个: nfe = {'CodigoUsuario':1,'CodigoEmpresa':1,'Originario':'1','CodigoCliente':1,'CodigoTran

我在Delphi中编写了以下方法:

函数acceptPutNF(const aJSONObject:TJSONObject;const aJSONArray:TJSONArray):TJSONObject

我试图发送一个PUT请求,但我不知道如何使用python指定第二个参数/对象数据
aJSONArray
。我试过这个:

nfe = {'CodigoUsuario':1,'CodigoEmpresa':1,'Originario':'1','CodigoCliente':1,'CodigoTransportador':1,'NaturezaOperacao':'1',
        'IndicadorPagamento':'1','ValorFrete':1,'ValorSeguro':1,'ValorOutrasDespesas':1,'ValorProdutosServicos':1,'ValorDescontoGlobal':1,'nformacoesContr':None}
nfe_itens = [{'CodigoProduto':1,'CodigoGradeProduto':1,'Quantidade':1,'ValorUnitario':1,'DescontoUnitario':1}]               

nfe_encoded = json.dumps(nfe)
nfe_itens_encoded = json.dumps(nfe_itens)

print nfe_encoded

url = 'http://localhost:88/datasnap/rest/TServerMethods/PutNF'
r = requests.put(url, data={nfe_encoded, nfe_itens_encoded})

我在上一条指令中收到错误消息

传递给数据的内容应该进行编码。您正在对这两个结构进行编码,然后围绕它构建一个未编码的结构。试试这个

r = requests.put(url, data=json.dumps([nfe, nfe_itens])

我最终只使用了一个带有“子对象”的对象数据参数,然后在服务器上管理它。我认为这是更好地使用JSON提供的更多可用功能的方法。

您能添加错误消息吗?我认为这与传递一个参数,后跟一个关键字参数有关,但我仍然在学习Pythonwell@JasonSperske:不,您在传递集合,而不是字典。错误:
文件“C:\Program Files\eclipse workspace\test\src\FirstModule.py”,第50行,r2=requests.put(url2,数据={nfe_编码,nfe_itens_编码})
@JasonSperske:这意味着调用方法时,
数据
关键字参数被赋予了一个
值。
请求
代码无法处理
值。谢谢@cmd,但不起作用。没有例外,但在我的Delphi函数中,无法访问数据对象。我得到了一个de>访问冲突
查看打印json.dumps([nfe,nfe_itens])的结果:所有结果都是通过一个数组:
[{“NaturezaOperacao”:“1”,…,“CodigoEmpresa”:1},[{“descontoinitario”:1,…,“CodigoProduto”:1}]
这会导致一个错误。@LucasMedeiros您的delphi希望数据看起来如何?