0

我正在按照Amadeus Github tuto测试 Amadeus 的 API以熟悉。我不知道分页,它似乎很难处理。

from amadeus import Client, ResponseError
from amadeus import Location
from json_encoder import json


def getFirst():
    response = amadeus.reference_data.locations.get(
        keyword='LON',
        subType=Location.ANY
    )
    return (response)

amadeus = Client(
    client_id=REPLACE_BY_YOUR_API_KEY,
    client_secret=REPLACE_BY_YOUR_API_SECRET
)

try:
    first = getFirst()
    next = amadeus.next(first)
    print(next.data)

except ResponseError as error:
    print(error)

第一次调用有效,但下一次(分页)我尝试不同的调用,但出现相同的[400] [page] Invalid query parameter错误。

这是来自提案的 JSON

我还发现了这个Amadeus 分页调用,其中 si 成功使用了相同类型的调用

...我想知道如何正确使用 Amadeus 库中的此功能。

感谢阅读和帮助!

4

1 回答 1

0

感谢您报告此错误。它已被修复,您现在可以安装 Python SDK 的 2.0.1 版本来获得修复:

点安装艾玛迪斯

根本原因:支持分页的 API 使用方括号参数来索引页面和偏移量。构建 URL 参数列表时的urlencode方法 未正确编码格式。urllib

对于以下示例:

{'longitude': 0.1278, 'latitude': 51.5074, 'page': {'offset': 10}}

它被编码为:

longitude=0.1278&latitude=51.5074&page={offset : 10}

代替:

longitude=0.1278&latitude=51.5074&page[offset]=10

新的私有方法_urlencode在实际调用urlencode完成之前解析并准备字典。

于 2019-01-17T16:46:20.757 回答