有没有人有一个使用Python向RESTful API发送XML POST请求的简单示例?我试图使用urllib2 Python库在Harvest API中“创建一个新项目”,没有运气。有效负载变量是一个有效的XML文档,它是文档的近似复制/粘贴(在“创建新项目”标题下),如下所示:
http://www.getharvest.com/api/projects
以下是我要执行的代码。
def postRequest():
""" Makes POST request to url, and returns a response. """
url = 'http://subdomain.harvestapp.com/projects'
opener = urllib2.build_opener()
opener.addheaders = [('Accept', 'application/xml'),
('Content-Type', 'application/xml'),
('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (self.username, self.password))[:-1]),
('User-Agent', 'Python-urllib/2.6')]
req = urllib2.Request(url=url, data=payload)
assert req.get_method() == 'POST'
response = self.opener.open(req)
print response.code
return response
我收到回复代码200(状态确定)而不是回复代码201(已创建)...这是针对Harvest支持人员的问题吗?
任何有任何提示的人都会非常感激。
谢谢, 杰夫。
答案 0 :(得分:1)
即使201响应严格更合适,也会返回200响应。即使您收到“正确”的回复,您确定请求未得到正确处理吗?
答案 1 :(得分:1)
除了在您创建响应的行上,您使用的是本地开启者,使用self.opener
,这看起来像是问题。