簡體   English   中英

Python請求發布json原始數據

[英]Python requests post json raw data

如何在python上使用Resuest lib發布RAW數據? 我正在嘗試登錄。

Json拋出異常

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

身體原始(郵差)

{ “clienteLogin”:{ “令牌”: “cbf36fb0e3de4b65ab0037303979a806”, “Operador”: “”, “IdUnidadeNegocio”:5 “PalavraCaptcha”: “”, “Senha”: “muranga21”, “cadastro”: “上”, “電子郵件”: “xazune@car101.pro”}, “mesclarCarrinho”:真正的 “令牌”: “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

使用不帶{}字符串

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'])

您已將data變量括在單引號中。 刪除它們只需使用標准字典。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM