使用urllib2的HTTP POST

时间:2015-07-22 21:25:56

标签: python json urllib2

在下面的代码中,我正在尝试使用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

1 个答案:

答案 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