Python请求发布JSON原始数据

Lea*_*pos 6 python json request python-2.7 python-requests

如何在python上使用Resuests lib发布RAW DATA?我正在尝试登录。

杰森抛出异常

TypeError:set(['“ clienteLogin”:{“ Token”:“ b94261f7e6744380919d406f576110cc”,“ Operador”:“”,“ IdUnidadeNegocio”:5,“ PalavraCaptcha”:“”,“ Senha”:“ muranga21”,“ cadastro” :“ on”,“电子邮件”:“ xazune@car101.pro”},“ mesclarCarrinho”:true,“令牌”:“ b94261f7e6744380919d406f576110cc”,“ IdUnidadeNegocio”:5,“ Operador”:“”}'])不是JSON可序列化

身体原料(邮递员)

{“ clienteLogin”:{“ Token”:“ cbf36fb0e3de4b65ab0037303979a806”,“ Operador”:“”,“ IdUnidadeNegocio”:5,“ PalavraCaptcha”:“”,“ Senha”:“ muranga21”,“ cadastro”:“ on”, “ Email”:“ xazune@car101.pro”},“ mesclarCarrinho”:true,“令牌”:“ cbf36fb0e3de4b65ab0037303979a806”,“ IdUnidadeNegocio”:5,“ Operador”:“”}

import requests,json
import cookielib
from lxml import html



s = requests.session()
req1 = s.get("https://carrinho.extra.com.br/Checkout?ReturnUrl=http://www.extra.com.br#login")
content1 = req1.content
tree = html.fromstring(content1)
token = tree.xpath("//script")[0].text.split('"')[1]
data = {
'"clienteLogin":{"Token":"'+token+'","Operador":"","IdUnidadeNegocio":5,"PalavraCaptcha":"","Senha":"muranga21","cadastro":"on","Email":"xazune@car101.pro"},"mesclarCarrinho":true,"Token":"'+token+'","IdUnidadeNegocio":5,"Operador":""}'
 }
headers = {
'Content-Type':'application/json'
}

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

print req3.content
Run Code Online (Sandbox Code Playgroud)

fur*_*ras 6

使用不带字符串 {}

data = '{"clienteLogin":"Token":"'+token+'","Operador":"","IdUnidadeNegocio":5,"PalavraCaptcha":"","Senha":"muranga21","cadastro":"on","Email":"xazune@car101.pro"},"mesclarCarrinho":true,"Token":"'+token+'","IdUnidadeNegocio":5,"Operador":""}'
Run Code Online (Sandbox Code Playgroud)

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

data = {
    "clienteLogin": {
        "Token": token,
        "Operador": "",
        "IdUnidadeNegocio": 5,
        "PalavraCaptcha": "",
        "Senha": "muranga21",
        "cadastro": "on",
        "Email": "xazune@car101.pro"
    },
    "mesclarCarrinho": True,
    "Token": token,
    "IdUnidadeNegocio": 5,
    "Operador":"",
}
Run Code Online (Sandbox Code Playgroud)

编辑:你不需要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())
Run Code Online (Sandbox Code Playgroud)

结果:

{'EfetuarLoginResult': {'DataNascimentoAno': '1984', ... }
Run Code Online (Sandbox Code Playgroud)

顺便说一句: req3.json()转换为python字典

data = req3.json()

print(data['EfetuarLoginResult']['DataNascimentoAno'])
Run Code Online (Sandbox Code Playgroud)