我正在尝试通过 Python 2.7 的 urllib2 模块发出 put 请求。当我执行 GET 时,它工作得很好,但是当我尝试将它变成 PUT 时,它返回一个 301 http 错误。我的代码在上面:
opener = urllib2.build_opener(urllib2.HTTPHandler)
req = urllib2.Request(reqUrl)
base64string = base64.encodestring('%s:%s' % (v_username, v_password)).replace('\n', '')
req.add_header("Authorization", "Basic %s" % base64string)
req.add_header("Content-Type", "application/rdf+xml")
req.add_header("Accept", "application/rdf+xml")
req.add_header("OSLC-Core-Version", "2.0")
req.get_method = lambda: 'PUT'
req.allow_redirects=True
url = opener.open(req)
如果我压制这条线
req.get_method = lambda: 'PUT'
它有效,但它是一个获取请求(如果我传递一些数据,它是一个帖子),但它必须是一个 PUT,我不知道如何用这个模块做不同的事情。
错误是
urllib2.HTTPError: HTTP Error 301: Moved Permanently.
有没有人比我更了解这一点?我是一个 REST 请求的新手,有些特殊性对我来说仍然是模糊的。