简体   繁体   English

发送带有数据的POST请求时出错

[英]Error while sending POST request with data

I tried to create program which will create account on this site: https://www.kostkuj.cz/register My main problem is that i dont really know how it works, so i re-builded one project to my requirements. 我试图创建将在此站点上创建帐户的程序: https : //www.kostkuj.cz/register我的主要问题是我真的不知道它是如何工作的,所以我根据自己的要求重新构建了一个项目。

I also tried sending requests with login data as parsed text: 我还尝试发送带有登录数据作为已解析文本的请求:

    email: "email@gmail.com"
    plainPassword: {first: "pass1", second: "pass1"}
    first: "pass1"
    second: "pass1"
    username: "username3" 

But i dont know what i am doing wrong. 但是我不知道我在做什么错。

This is my whole code: 这是我的整个代码:

import requests


headers = {
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}

register_data = {
    {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}
}

with requests.Session() as s:
    url = 'https://api.kostkuj.cz/register'
    r = s.get(url, headers=headers)
    r = s.post(url, data=register_data, headers=headers)
    print(r.content)

I am getting error like: 我收到如下错误:

Traceback (most recent call last):
 File "C:\Users\jiris\Desktop\spamkostkuj.py", line 9, in <module>
   {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}
TypeError: unhashable type: 'dict'

干得好:

r = s.post(url, json=register_data, headers=headers)

First thing headers needs ro in pair ie key value pair. 第一件事headers需要成对,即键值对。 In your case somthing like: 在您的情况下,例如:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}

Secondly, your are sending data as dict of dict which is incorrect, instead send a dict , like: 其次,您以不正确的dict的形式发送数据,而是发送dict ,例如:

register_data = {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}

Try this. 尝试这个。 Hopefully is should work for you. 希望是应该为您工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM