早上好,一旦我使用了提交只有一个值/参数的网络表单的请求。但现在我必须提交一个包含多个值的网络表单,但它没有提交,而且打印(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>
也许尝试设置内容类型:
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服务器如何解释您的帖子数据。确保您使用的是正确的内容类型。
您有很多次要发送未经表单编码的数据。如果传入字符串而不是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)