Sending a HTTP POST request from Python (trying to convert from PHP)

為{幸葍}努か 提交于 2019-12-05 21:46:28

You are overcomplicating things, by quite some distance. Python takes care of most of this for you. There is no need to open a socket yourself, nor do you need to build headers and the HTTP opening line.

Use the urllib and urllib2 modules to do the work for you:

from urllib import urlencode
from urllib2 import urlopen

params = urlencode(postfields)
url = whmcsurl + 'modules/servers/licensing/verify.php'
response = urlopen(url, params)
data = response.read()

urlopen() takes a second parameter, the data to be sent in a POST request; the library takes care of calculating the length of the body, and sets the appropriate headers. Most of all, under the hood it uses another library, httplib, to take care of the socket connection and producing valid headers and a HTTP request line.

The POST body is encoded using urllib.urlencode(), which also takes care of proper quoting for you.

You may also want to look into the external requests library, which provides an easier-to-use API still:

import requests

response = requests.post(whmcsurl + 'modules/servers/licensing/verify.php', params=params)
data = response.content  # or response.text for decoded content, or response.json(), etc.

your headers should look like this

headers = { "Content-type" : "application/x-www-form-urlencoded" };
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!