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

时间:2013-10-29 16:44:07

标签: python http request python-requests

我在Delphi中使用以下方法编写:

function 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})

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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