将带有空格的参数传递给请求中的url

时间:2018-09-20 11:21:46

标签: python python-requests

我正在从API请求数据,该API通过将额外的参数传递给URL来进行额外的过滤。我正在这样做,但要取回未经过滤的报告。

我正在使用的代码是

import requests

# prepare the url
API_KEY = '234-1234-1234-123-42134'
BASE_URL = 'https://hq.appsflyer.com/export/{appsflyer_id}/{endpoint}/{version}'

appsflyer_id = 'id123456789'
endpoint = 'in_app_events_report'
version = 'v5'
start_date = '2018-09-13'
end_date = '2018-09-19'
media_source = 'Apple Search Ads'
event_name = 'event name with spaces'

url = BASE_URL.format(appsflyer_id=appsflyer_id, endpoint=endpoint, version=version)

# additional filtering
params = {
    'api_token': API_KEY, 
    'from': start_date, 'to': end_date,
    'media_source': media_source,
    'event_name': event_name,
}

r = requests.get(url, params=params)

问题在于,似乎我无法识别“ media_source”和“ event_name”参数,因为我要返回所有媒体源和所有事件名称。

我尝试检查该URL,但仍在运行

r.url

返回

https://rawdata.appsflyer.com/export/token/lego_test_id123456789_non_organic_in_app_events_2018-09-13_2018-09-19_JTSWQ

这很奇怪,因为这不是我要建立的网址。

我尝试使用此代码

params = {
    'api_token': API_KEY_STITCHFIX, 
    'from': start_date, 'to': end_date,
    'media_source': media_source,
    'event_name': event_name,
}

params = urllib.parse.urlencode(payload, quote_via=urllib.parse.quote)
r = requests.get(url, params=params)

基于this的答案,但是也没有用。

如果有帮助,API文档为here

我的问题是:

  1. 为什么请求返回此URL?
  2. 如何正确传递请求中的参数?

0 个答案:

没有答案