2

私はPythonを初めて使用し、JSONデータを送信するAPIサービスに接続するPythonライブラリを構築する必要があります。すべて正常に動作しますが、POSTリクエストを実行する辞書の辞書を送信する必要があります:

    def create_project(self, project):
        print project
        params = simplejson.dumps(project)
        print params
        req = requests.post(self.url+'/projects/addSpeedy.json',
            data=params, 
            auth=HTTPBasicAuth(self.api_id, self.api_key),verify=False)
        data = simplejson.loads(req.text)
        return data

その関数に渡すプロジェクト パラメータには、次の構造が含まれています。

    script = {
        'part001': 'HI',
        'part002': 'WORLD'
    }
    project = {
        'title': 'Project posted from Python Carrot',
        'script': script,
        'remarks': "I want the voice be similar to Bugs Bunny.",
        'test': '1'
    }

ただし、リクエストを実行すると、必要な「タイトル」フィールドが欠落していることがAPIから通知されますが、関数でデータを印刷するとすべて問題ないように見えます.dict jsonエンコードは、この場合のリクエストサイトで見たものです: http: //docs.python-requests.org/en/latest/user/quickstart/#more-complicited-post-requests

他の言語のライブラリがあり、正常に動作するため、問題は API ではありません。

4

1 に答える 1

0

http クライアントとサーバー API の詳細がわからないと、何が問題なのかを推測するのは困難です。これをデバッグする最初の試みは、 wiresharkを取得して、生成された要求が他のクライアントの実装で生成された要求と同一であるかどうかを確認することであり、次の質問に答える必要があります。

  • 一部のヘッダーが異なりますか?
  • Content-Length と Content-Type は正しく指定されていますか?
  • 認証は成功しましたか、それともタイトルが欠落している応答が非常に一般的に使用されていますか?
于 2012-09-28T03:57:07.843 に答える