Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求库不希望获取请求冒号转义_Python_Get_Python Requests - Fatal编程技术网

Python请求库不希望获取请求冒号转义

Python请求库不希望获取请求冒号转义,python,get,python-requests,Python,Get,Python Requests,我有一个RESTful API,我从中请求它,查询字符串参数为date\u start和date\u end。API文档说明请求的日期时间应该是ISO字符串,如:2019-06-15T00:22:55。设置日期范围如下所示: https://path/to/api?start_date=2019-06-15T00:22:55&end_date=2019-08-05T19:55:33 但是,Python请求想要转义冒号(:),用%3A替换冒号,从而导致 https://path/to/a

我有一个RESTful API,我从中请求它,查询字符串参数为date\u start和date\u end。API文档说明请求的日期时间应该是ISO字符串,如:2019-06-15T00:22:55。设置日期范围如下所示:

https://path/to/api?start_date=2019-06-15T00:22:55&end_date=2019-08-05T19:55:33
但是,Python请求想要转义冒号(
),用
%3A
替换冒号,从而导致

https://path/to/api?start_date=2019-06-15T00%3A22%3A55&end_date=2019-08-05T19%3A55%3A33
不幸的是,API并没有将其视为可解参数

当我从邮递员那里运行URL时,格式不会被破坏。然而,尝试使用典型的惊人请求库将我的应用程序连接到API时,它会执行字符串转义转换。我正在通过请求文档建议的
有效负载
样式的键值对传递参数,如下所示:

info_id = 'abcXYZ1234'
url = 'path/to/sandbox'
start = '2019-06-15T00:00:00'
end = '2019-07-15T00:00:00'
payload = {'info_id': info_id, 'start_date': start, 'end_date': end}
r = requests.get(url, params=payload)
info = r.json()

如何防止请求转义冒号?

您可以使用
请求的
参数
防止url编码。get

url = 'https://path/to/api'
r = requests.get(url, params='start_date=2019-06-15T00:22:55&end_date=2019-08-05T19:55:33')
从典型的有效负载字典结构转换非常容易(代码来自)


您是否尝试在url-
请求中直接使用此值。get('https://path/to/api?start_date=2019-06-15T00:22:55&end_date=2019-08-05T19:55:33)
?好问题-不,我在参数键值对中使用它。当您将字符串或字节分配给参数时,我将更新.should也会起作用-如@Saritus answer中所述。的可能重复项
payload = {
  'start_date': '2019-06-15T00:22:55',
  'end_date': '2019-08-05T19:55:33'
}

payload_str = "&".join("%s=%s" % (k,v) for k,v in payload.items())

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