2017-10-11 18 views
0

を推定し、私はHerokuのユーバーAPIは、リクエスト/エンドポイント

マイフォークのためのユーバーアプリケーションのフォークを行っているため/ JSONが無効である報告しますhttps://developer.uber.com/docs/riders/references/api/v1.2/requests-estimate-postに記載されている/ requests/estimateエンドポイントを使用して、特定の製品IDの価格を見積もります。

@app.route('/price', methods=['GET']) 
def price(): 
"""Example call to the price estimates endpoint. 

    Returns the time estimates from the given lat/lng given below. 
    """ 
url = config.get('base_uber_url') + 'requests/estimate' 
params = { 
    "product_id": "83941b0d-4be1-4979-a9c0-f0af5ee2b89b", 
    "start_latitude": config.get('start_latitude'), 
    "start_longitude": config.get('start_longitude'), 
    "end_latitude": config.get('end_latitude'), 
    "end_longitude": config.get('end_longitude') 
} 
print params 
print generate_ride_headers(session.get('access_token')) 
response = app.requests_session.post(
    url, 
    headers=generate_ride_headers(session.get('access_token')), 
    data=params 
) 


return render_template(
    'results.html', 
    endpoint='price', 
    data=response.text, 
) 

ここでは、1.2バージョンのUber Apiを使用するコードのスニペットを示します。他のエンドポイントは正常に動作していますが、これは動作しません。

印刷ステートメントはHerokuのログを印刷し、これが出力

{'product_id': '83941b0d-4be1-4979-a9c0-f0af5ee2b89b', 'end_longitude': '72.8811862', 'start_latitude': '18.936404', 'end_latitude': '19.0822507', 'start_longitude': '72.832546'} 

{'Content-Type': 'application/json', 'Authorization': 'Bearer KA.eyJ2ZXJzaW9uIjkgsdshdJpZCI6IkNmcjAvRzhrUUNPaDNhSnRsUVZ6QlE9PSIsImV4cGlyZXNfYXQiOjE1MTAzMjA3NzgsInBpcGVsaW5lX2tleV9pZCI6Ik1RPT0iLCJwaXBlbGluZV9pZCI6MX0.JDoDTgaYJitK8Rtr35C6gTh5IQc7-P4T7mGg_wOYXu0'} 

あるAPIによって報告されたエラーは

{「メッセージ」である:「リクエストボディにJSONを解析できません」 、 "code": "invalid_json"}

+0

JSONは、単一引用符を許可しない:

import json response = app.requests_session.post( url, headers=generate_ride_headers(session.get('access_token')), data=json.dumps(params) 

するか、kwargのJSONとして渡す:これを行う

次のいずれかの

はここで2つの例です。 –

+0

...あなたは本当にここにアクセストークンを投稿しましたか? –

+0

いいえ、そのアクセストークンは変更されていません。 –

答えて

0

jsonを文字列としてエンコードする必要があります。幸いなことに、これを行うことができます。または、json.dumps()を使用してオブジェクトを文字列としてダンプできます。

response = app.requests_session.post(
    url, 
    headers=generate_ride_headers(session.get('access_token')), 
    json=params 
) 
+0

私は両方を試してみました。最初の解決策はすばらしく機能します。上記の変更に加えて、私はparams jsonの二重引用符を一重引用符に変更しました。 –

関連する問題