在下面的代码中,我正在尝试使用urllib2进行数据POST。但是,我收到HTTP 400错误请求错误。任何人都可以帮我解释为什么会出现这种情况?可以从我的计算机访问该URL,并且所有相关端口都已打开。
data = {'operation' : 'all'}
results = an.post(an.get_cookie(), 'http://{}:8080/api/v1/data/controller/core/action/switch/update-host-stats'.format(an.TARGET), data)
print results
def post(session_cookie, url, payload):
data = urllib.urlencode(payload)
req = urllib2.Request(url, data)
req.add_header('Cookie','session_cookie=' + session_cookie)
try:
returnedData = urllib2.urlopen(req, data, timeout = 30)
data = json.load(returnedData)
except urllib2.URLError, e:
print e.code
print 'URL ERROR'
return {}
return data
答案 0 :(得分:-1)
以下代码适用于我:
import json
import urllib2
import logging
def post_json_request(url, post_data, optional_headers = {}):
"""
HTTP POST to server with json as parameter
@param url: url to post the data to
@param post_data: JSON formatted data
@return: response as raw data
"""
response = ""
try:
req = urllib2.Request(url, post_data, optional_headers)
jsonDump = json.dumps(post_data)
response = urllib2.urlopen(req, jsonDump)
except Exception, e:
logging.fatal("Exception while trying to post data to server - %s", e)
return response
我在各种顽固的平台中使用它,坚持检索特定方法的数据。
希望它会有所帮助,
Liron