Uber API报告JSON对于/ requests / estimate端点无效

时间:2017-10-11 13:57:17

标签: python json heroku uber-api

我已经为优步申请了Heroku

My Fork:https://github.com/CuriosityGym/Python-Sample-Application

我已使用此处记录的/ requests / estimate端点https://developer.uber.com/docs/riders/references/api/v1.2/requests-estimate-post修改了原始代码和/ price网址,以获取特定产品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,
)

以下是我的代码片段,它使用了Uber Api的1.2版本。其他终点工作正常,这个不起作用。

print语句打印到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报告的错误是

{" message":"无法在请求正文中解析JSON。","代码":" invalid_json"}

1 个答案:

答案 0 :(得分:0)

您需要将json编码为字符串。幸运的是,请求可以为您执行此操作,或者您可以使用var ajaxMethod = "POST"; var ajaxUrl = "save.php"; $.ajax({ type: ajaxMethod, url: ajaxUrl, data: dataString, success: function(chat_list) { } }); 将对象转储为字符串。

以下是两个例子:

要么这样做:

json.dumps()

或者将其作为kwarg json传递:

import json

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