【发布时间】:2016-03-16 09:14:01
【问题描述】:
我正在尝试在 Python 中复制以下 CURL 命令(我正在尝试使用特定 IP 上的一些数据发出 POST 请求):
curl -k --data "phonenr=a_number&smstxt=Test&Submit=SendSms" https://admin:pass@ip/txsms.cgi
ip 是远程服务器的 IP,admin:pass 是所需的凭据。
此 CURL 命令执行正确,响应为 200。
使用以下 python 代码,我收到:
httplib.InvalidURL: nonnumeric port: 'pass@91.195.144.248'
谁能告诉我我做错了什么?
import urllib2 as urllib
from os.path import join as joinPath
from urllib import urlencode
# constant
APPLICATION_PATH = '/srv/sms_alert/'
ALERT_POINT_PATH = joinPath(APPLICATION_PATH, 'alert_contact')
URL_REQUEST_TIMEOUT = 42
SMS_BOX_URL = 'https://admin:pass@ip/txsms.cgi'
with open(ALERT_POINT_PATH, 'r') as alertContactFile:
for line in alertContactFile:
line = line.strip('\n')
data = {
'phonenr': line,
'smstext': 'Test',
'Submit': 'SendSms'
}
url_data = urlencode(data)
url_data = url_data.encode('UTF-8')
req = urllib.Request(SMS_BOX_URL, url_data)
with urllib.urlopen(req) as response:
print(response.read())
【问题讨论】: