【问题标题】:How can i take data one line at a time from a txt file and use it as a variable to send requests?如何从 txt 文件中一次一行地获取数据并将其用作发送请求的变量?
【发布时间】:2023-01-07 23:38:59
【问题描述】:

我目前正在做一个我认为很酷的小项目。但是,我遇到了很大的障碍。我试图让它从文本文件中读取用户名并将其上传到 API,但是我不断收到错误代码 400,服务器响应表明请求中的用户名字段为空。我还添加了一个打印语句来确认凭证变量设置正确,这让我认为这是我与 API 的通信错误。我认为另一个问题可能是我将内容类型设置为“纯文本”。我运行 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”。

谢谢 !

【问题讨论】:

    标签: python http post python-requests


    【解决方案1】:
    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)
    

    【讨论】:

    • 我刚刚在代码中添加,但仍然出现错误 400。该列表只有 3 个用户名用于测试。这可能是标题内容类型的问题,还是我列出数据变量的方式的问题?
    • 您可以尝试检查您使用的 content-type 标头是否适合您尝试发送的请求。你有没有试过response.status_codereponse.text来查看关于你的错误的更多细节?如果您想再次测试它,我已经将它再次添加到代码中。是的,正如您所说,如果服务器期望其他内容,您的 text/plain 也可能是问题所在。
    • 在响应和 API 页面上,它表示正在寻找 JSON。但是我怎样才能发送带有请求的 JSON 呢?而且它似乎也已经是 JSON 格式了。
    • 啊,是的,这似乎是问题 text/plain 是错误的。我将编辑上面的代码以添加 json。
    • 检查我在上面编辑的代码。您所要做的就是将其更改为application/json,而不是原来的text/plain
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2021-12-21
      • 2021-04-23
      • 2015-07-15
      相关资源
      最近更新 更多