5

XML POST リクエストを Python で RESTful API に送信する簡単な例はありますか? Harvest API で urllib2 Python ライブラリを使用して「新しいプロジェクトを作成」しようとしていますが、うまくいきません。ペイロード変数は有効な 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

応答コード 201 (Created) ではなく、応答コード 200 (Status OK) を受け取りました... これは Harvest サポート担当者への質問ですか?

誰でもヒントをいただければ幸いです。

ありがとう、ジェフ。

4

2 に答える 2

1

厳密には 201 応答の方が適切な場合でも、200 応答を返すのが一般的です。「正しい」応答を取得している場合でも、要求が正しく処理されていないことを確信していますか?

于 2009-10-09T21:08:55.963 に答える
1

self.opener問題のように見えるを使用する、応答を作成する行を除いて、どこでもローカルオープナーを使用しています。

于 2011-04-15T12:34:14.593 に答える