使用python请求发送多个值

时间:2018-09-04 14:51:52

标签: python python-2.7 python-requests

早上好, 一旦我使用了仅提交一个值/参数的Web表单请求。但是现在我必须提交一个具有多个值的Web表单,但不提交,并且print(r.status_code,r.reason)是200,OK。没有任何错误。我已经搜索了很多,但是我不明白这是怎么回事。这是我的代码。

import requests

payload = {'to':'anyemail@xx.com','from':'anyemail@xx.com','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>

2 个答案:

答案 0 :(得分:0)

也许尝试设置内容类型:

url = '.....'
payload = {'to':'anyemail@xx.com','from':'anyemail@xx.com','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服务器如何解释您的帖子数据。 确保您使用的内容类型正确。

答案 1 :(得分:0)

许多情况下,您希望发送的数据未经格式编码。如果您传递的是字符串而不是字典,则将使用json.dumps(payload)

直接发布该数据
import requests,json

payload = {'to':'anyemail@xx.com','from':'anyemail@xx.com','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)