【问题标题】:Post to API works on Postman but the generated Python code does notPost to API 适用于 Postman,但生成的 Python 代码不能
【发布时间】:2020-08-29 15:59:00
【问题描述】:

以下代码由 Postman 在成功发布时生成。但是,当我尝试在 Python 上运行它时,我得到了响应 [409],它说只接受 PDF 或 JPEG 文件,即使我提交的文件是 PDF。希望有人可以帮助我解决这个问题。已经搜索了几天,但无法使其正常工作。我无法关闭标题,因为该网站需要身份验证。我成功获得了令牌和会话。

payload = {'integracaoDocumento.nomeVitima': 'Outroteste da Costa',
           'integracaoDocumento.rgVitima': '1234',
           'integracaoDocumento.uploadDocumentoList[0].descricao': 'BO 1234',
           'integracaoDocumento.uploadDocumentoList[0].idTipoDocumento': '1',
           'integracaoDocumento.uploadDocumentoList[0].identificador': 'BO 1234',
           'dadosRegistro.dataRegistroDelegacia': '11/09/2016',
           'dadosRegistro.idDelegaciaRegistro': '141',
           'dadosRegistro.idDelegaciaApuracao': '227',
           'dadosFato.data': '10/12/2015',
           'dadosFato.periodo': 'T',
           'dadosFato.idMunicipio': '5508',
           'dadosFato.descricao': 'Descricao Fato Desaparecido',
           'dadosFato.idTipoLogradouro': '1',
           'dadosFato.logradouro': 'Rua de teste',
           'dadosFato.numero': '777',
           'dadosFato.complemento': 'Apt 123456',
           'dadosFato.cep': '21351110',
           'dadosFato.pontoReferencia': 'Perto do bar.',
           'vitima.dadosBiograficos.cnh': '123123123',
           'vitima.dadosBiograficos.nomeMae': 'Nome da Mae de Vitima Desaparecimento Instaurado 1',
           'vitima.dadosBiograficos.nomePai': 'Nome do Pai de Vitima Desaparecimento Instaurado 1',
           'vitima.dadosBiograficos.cpf': '94151587004',
           'vitima.dadosBiograficos.orgaoEmissorRg': 'DETRAN',
           'vitima.dadosBiograficos.tituloEleitor': '1234567890',
           'vitima.dadosBiograficos.ctps': '333222111',
           'vitima.dadosBiograficos.dataNascimento': '17/03/1959',
           'vitima.dadosBiograficos.idEstadoCivil': '1',
           'vitima.dadosBiograficos.passaporte': 'FT44225577',
           'vitima.dadosBiograficos.sexo': 'F',
           'vitima.dadosBiograficos.nacionalidade': 'B',
           'vitima.dadosBiograficos.idNaturalidade': '33',
           'vitima.caracteristicasFisicas.idAltura': '3',
           'vitima.caracteristicasFisicas.idTipoSanguineo': '2',
           'vitima.caracteristicasFisicas.idBiotipo': '1',
           'vitima.caracteristicasFisicas.idCorOlhos': '1',
           'vitima.caracteristicasFisicas.idCorPele': '2',
           'vitima.caracteristicasFisicas.idTipoCabelo': '1',
           'vitima.caracteristicasFisicas.idCorCabelo': '1',
           'vitima.caracteristicasFisicas.amputacoes[0]': '1',
           'vitima.caracteristicasFisicas.amputacoes[1]': '4',
           'vitima.caracteristicasFisicas.deformacoes[0]': '1',
           'vitima.caracteristicasFisicas.deficiencias[0]': '1',
           'vitima.caracteristicasFisicas.deficiencias[1]': '2',
           'vitima.caracteristicasFisicas.deficiencias[2]': '3',
           'vitima.caracteristicasFisicas.caracteristicasIndividualizantes[0].idCaracteristicaIndividualizante': '1',
           'vitima.caracteristicasFisicas.caracteristicasIndividualizantes[0].idParteCorpo': '2',
           'vitima.caracteristicasFisicas.caracteristicasIndividualizantes[0].descricao': 'Descricao caracteristica individualizante.',
           'vitima.caracteristicasFisicas.artigoPessoais[0].idArtigoPessoal': '1',
           'vitima.caracteristicasFisicas.artigoPessoais[0].idParteCorpo': '5',
           'vitima.enderecos[0].idUf': '53',
           'vitima.enderecos[0].idMunicipio': '5508',
           'vitima.enderecos[0].idTipoLogradouro': '3',
           'vitima.enderecos[0].logradouro': 'Rua de teste da Vitima Desaparecimento Instaurado 1',
           'vitima.enderecos[0].numero': '111',
           'vitima.enderecos[0].complemento': 'Casa 99',
           'vitima.enderecos[0].cep': '22735080',
           'vitima.enderecos[0].pontoReferencia': 'Perto da padaria.',
           'vitima.contatos[0].idTipoContato': '1',
           'vitima.contatos[0].descricaoContato': 'teste@teste.com.br',
           'vitima.contatos[1].idTipoContato': '2',
           'vitima.contatos[1].descricaoContato': 'Contato teste 1',
           'interessados[0].nome': 'Interessado teste 1',
           'interessados[0].cpf': '62784035018',
           'interessados[0].rg': '223566578',
           'interessados[0].orgaoEmissor': 'IFP',
           'interessados[0].nomePai': 'Pai interessado teste 1',
           'interessados[0].nomeMae': 'Mae Interessado teste 1',
           'interessados[0].idRelacaoVitima': '1',
           'interessados[0].meiosComunicacoes[0].idTipoMeioComunicao': '1',
           'interessados[0].meiosComunicacoes[0].descricao': 'Meio de comunicacao teste 1',
           'interessados[0].meiosComunicacoes[1].idTipoMeioComunicao': '2',
           'interessados[0].meiosComunicacoes[1].descricao': 'blah@blah.com.br',
           'interessados[1].nome': 'Interessado teste 2',
           'interessados[1].cpf': '14970635072',
           'interessados[1].rg': '1121346579',
           'interessados[1].orgaoEmissor': 'DETRAN',
           'interessados[1].nomePai': 'Pai interessado teste 1-1',
           'interessados[1].nomeMae': 'Mae Interessado teste 1-1',
           'interessados[1].idRelacaoVitima': '2',
           'interessados[1].meiosComunicacoes[0].idTipoMeioComunicao': '2',
           'interessados[1].meiosComunicacoes[0].descricao': 'AAAAA@FSDAFDSF.com.br'}
headers = {
           'Authorization': 'Bearer ' + token,
           'Cookie': 'JSESSIONID=' + session,
           }
files = [('integracaoDocumento.uploadDocumentoList[0].arquivo',open(r'PATH_TO_FILE\FILE.pdf','rb'))]
response = requests.request("POST", url, headers = headers, data = payload, files = files, verify = False)

print(response.text.encode('utf8'))

【问题讨论】:

    标签: python python-3.x post python-requests postman


    【解决方案1】:

    这是重写的答案。我建议声明 content-type,但根据multipart data POST using python requests: no multipart boundary was found,您不应该使用 Python 请求手动编写它。

    取而代之的是content-disposition 元素,可用于声明内容的详细信息。也许只需添加具有正确扩展名的文件名就足以让服务器接受您的文件。从这里阅读更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

    【讨论】:

    • 我尝试添加内容类型,它返回响应 500 并显示一条错误消息,指出没有多部分边界。我不确定边界应该是什么,但我尝试从 API 文档的示例中添加一个(边界 = 6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm)。然后它返回 Response 409 并带有一条错误消息,指出请求不能为空。还有其他想法吗?
    【解决方案2】:

    我通过获取 http.client 代码而不是请求解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 2018-08-27
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2017-08-06
      相关资源
      最近更新 更多