5

有没有人有一个使用 Python 向 RESTful API 发送 XML POST 请求的简单示例?我正在尝试使用 urllib2 Python 库在 Harvest API 中“创建一个新项目”,但没有成功。payload 变量是一个有效的 XML 文档,是其文档的近似副本/粘贴(在 Create New Project 标题下),如下所示:

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 支持人员的问题吗?

任何人的任何提示将不胜感激。

谢谢,杰夫。

4

2 回答 2

1

即使 201 响应严格来说更合适,返回 200 响应也是很常见的。即使您得到“正确”的响应,您确定请求没有得到正确处理吗?

于 2009-10-09T21:08:55.963 回答
1

您在任何地方都使用本地开启程序,除了在您创建响应的行,您使用的位置self.opener,这看起来像问题。

于 2011-04-15T12:34:14.593 回答