使用python请求发送多个值

问题描述 投票:-1回答:2

早上好,一旦我使用了提交只有一个值/参数的网络表单的请求。但现在我必须提交一个包含多个值的网络表单,但它没有提交,而且打印(r.status_code,r.reason)是200,好的。没有任何错误。我搜索了很多,但我不明白什么是错的。这是我的代码。

import requests

payload = {'to':'[email protected]','from':'[email protected]','message':'sent from python','subject':'sent from python'}
r = requests.post("http://www.website.com/send.php",data=payload)
print('Email sent successfully!')    
print(r.status_code, r.reason)
print(r.text)
print(r.content)

网页代码

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <form method="POST" action="send.php">
            <input type="email" name="to">
            <input type="email" name="from">
            <input type="text" name="message">
            <input type="text" name="subject">
            <input type="submit" name="send">
        </form>
    </body>
</html>
python python-2.7 python-requests
2个回答
0
投票

也许尝试设置内容类型:

url = '.....'
payload = {'to':'[email protected]','from':'[email protected]','message':'sent from python','subject':'sent from python'}
headers = {'content-type': 'application/x-www-form-urlencoded'}

r = requests.post(url, data=payload, headers=headers)

内容类型定义了Web服务器如何解释您的帖子数据。确保您使用的是正确的内容类型。


0
投票

您有很多次要发送未经表单编码的数据。如果传入字符串而不是dict,那么将使用json.dumps(payload)直接发布该数据

import requests,json

payload = {'to':'[email protected]','from':'[email protected]','message':'sent from python','subject':'sent from python'}
r = requests.post("http://www.website.com/send.php",data=json.dumps(payload))
print('Email sent successfully!')    
print(r.status_code, r.reason)
print(r.text)
print(r.content)
© www.soinside.com 2019 - 2024. All rights reserved.