Python请求发布json原始数据

时间:2017-01-31 22:18:20

标签: python json python-2.7 request python-requests

如何在python上使用Resuest lib发布RAW数据? 我试图登录。

Json抛出异常

TypeError:set(['" clienteLogin":{" Token":" b94261f7e6744380919d406f576110cc"," Operador":& #34;"" IdUnidadeNegocio":5," PalavraCaptcha":""" Senha":" muranga21"" cadastro":"上""电子邮件":" xazune@car101.pro"}" mesclarCarrinho":真,"令牌":" b94261f7e6744380919d406f576110cc"" IdUnidadeNegocio":5," Operador":"& #34;}'])不是JSON可序列化的

身体原始(邮差)

{" clienteLogin" {"令牌":" cbf36fb0e3de4b65ab0037303979a806"" Operador":"&#34 ;, " IdUnidadeNegocio":5," PalavraCaptcha":""" Senha":" muranga21"&#34 ; cadastro":"上""电子邮件":" xazune@car101.pro"}" mesclarCarrinho":真,& #34;令牌":" cbf36fb0e3de4b65ab0037303979a806"" IdUnidadeNegocio":5," Operador":""}

代码

Unstable

2 个答案:

答案 0 :(得分:4)

使用不带{}

的字符串
data = '{"clienteLogin":"Token":"'+token+'","Operador":"","IdUnidadeNegocio":5,"PalavraCaptcha":"","Senha":"muranga21","cadastro":"on","Email":"xazune@car101.pro"},"mesclarCarrinho":true,"Token":"'+token+'","IdUnidadeNegocio":5,"Operador":""}'

或字典和requests会将其转换为字符串。

data = {
    "clienteLogin": {
        "Token": token,
        "Operador": "",
        "IdUnidadeNegocio": 5,
        "PalavraCaptcha": "",
        "Senha": "muranga21",
        "cadastro": "on",
        "Email": "xazune@car101.pro"
    },
    "mesclarCarrinho": True,
    "Token": token,
    "IdUnidadeNegocio": 5,
    "Operador":"",
}

编辑:您不需要json.dumps()header - requestsjson=

data = {
    "clienteLogin": {
        "Token": token,
        "Operador": "",
        "IdUnidadeNegocio": 5,
        "PalavraCaptcha": "",
        "Senha": "muranga21",
        "cadastro": "on",
        "Email": "xazune@car101.pro"
    },
    "mesclarCarrinho": True,
    "Token": token,
    "IdUnidadeNegocio": 5,
    "Operador":"",
}

url = "https://carrinho.extra.com.br/Api/checkout/Cliente.svc/Cliente/Login"
req3 = s.post(url, json=data)

print(req3.json())

结果:

{'EfetuarLoginResult': {'DataNascimentoAno': '1984', ... }

BTW: req3.json()转换为python字典

data = req3.json()

print(data['EfetuarLoginResult']['DataNascimentoAno'])

答案 1 :(得分:1)

您已将data变量括在单引号中。删除它们,只使用标准字典。