我怎么能把数据一行一次从一个txt文件,并使用它作为一个变量来发送请求?



我目前正在做一个我认为很酷的小项目。然而,我遇到了一个大的道路堵塞。我试图让它从文本文件中读取用户名并将其上传到API,但是,我不断获得错误代码400,服务器响应指出用户名字段在请求中为空。我还添加了一条print语句来确认凭证变量是否设置正确,这让我认为这是我与API之间的通信错误。我认为另一个问题可能是我将内容类型设置为"plain/text"。我在Wireshark上查了一下我的具体请求,看起来一切都在一起了。下面是我当前的代码:

import requests
import time
with open('./user.txt', 'r') as f:
creds = f.read()
print(f"Current User: {creds}")
url = 'http://example.com/api'
data = {f"nickname":"{creds}","password":"{creds}","email":"","referral":"null"}
headers = {'Content-Type': 'text/plain'}
response = requests.post(url, data=data, headers=headers)

我对使用请求库很陌生,所以我很抱歉,如果这是一个不好的问题,但任何帮助将是非常感激的。

Wireshark声明我的请求数据是nickname=%7Bcreds%7D&password=%7Bcreds%7D.

import time
import requests
import json
with open('./user.txt', 'r') as f:
for line in f:
creds = line.strip()
print(f"Current User: {creds}")
url = 'http://example.com/api'
data = {f"nickname":"{creds}","password":"{creds}","email":"","referral":"null"}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
print(response.status_code)
print(response.text)

问题是我的标题类型!我不需要用JSONplain/text。我使用了application/x-www-form-urlencoding,它是我从文件的历史记录中获得的。应用程序现在读取每个用户名和密码,并将其发送到服务器!

最新更新