我已经为优步申请了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"}
答案 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)