Python请求-在查询字符串的开头添加文本

Python请求-在查询字符串的开头添加文本,python,python-requests,Python,Python Requests,当通过python请求发送数据到GET请求时,我需要在查询字符串的开头特别添加一些内容。我尝试过通过dicts和json字符串传递数据,但没有成功 由请求生成时出现的请求: /apply/.../explain?%7B%22...... 由其交互式API文档生成时出现的请求(招摇过市): 其中,我的数据的键值对跟在上面的摘录后面 最终,我认为缺少的部分是由他们的文档生成的记录=。它是唯一一个与请求产生的内容不同的部分 目前,我已将其设置为以下内容: import requests s = re

当通过python请求发送数据到GET请求时,我需要在查询字符串的开头特别添加一些内容。我尝试过通过dicts和json字符串传递数据,但没有成功

由请求生成时出现的请求:

/apply/.../explain?%7B%22......
由其交互式API文档生成时出现的请求(招摇过市):

其中,我的数据的键值对跟在上面的摘录后面

最终,我认为缺少的部分是由他们的文档生成的记录=。它是唯一一个与请求产生的内容不同的部分

目前,我已将其设置为以下内容:

import requests
s = requests.Session()
s.auth = requests.auth.HTTPBasicAuth(username,password)
s.verify = certificate_path

# with data below being a dictionary of the values I need to pass.
r = s.get(url,data=data)
我试图在下面的文档中添加一个图像,但还没有足够的声誉:


'GET'请求没有数据,这是针对“POST”和朋友的

您可以改为使用
params
kwarg发送查询字符串参数:

>>> params = {'record': '{"'}
>>> response = requests.get('http://www.example.com/explain', params=params)
>>> response.request.url
'http://www.example.com/explain?record=%7B%22'

从这些评论中,我觉得有必要对此进行解释

http://example.com/sth?key=value&anotherkey=anothervalue

假设您有一个如上所述的url,以便只需编写python请求即可调用

 response = requests.get('http://example.com/sth', params={
                          'key':'value', 
                           'anotherkey':'anothervalue'
                         })

请记住,如果您的值或键中有任何特殊字符,它们将被转义,这就是问题中url的
%7B%2
部分的原因

From docs
r=requests.get('http://httpbin.org/get“,params=payload)
查看
params
而不是
data
var,请参阅params允许您传递一组键值对。我不需要键值对,只需要那个简单的字符串,除非我误解了文档。
record
是您的键,
%7B%22
是您的值;)我在上面增加了一些清晰度7B%22不是我的实际值,只是url中的一个片段。实际数据如下所示。你能链接到文档吗?所以,如果我要使用params,我必须预先形成将由此生成的字符串的剩余部分吗?我向您保证,根据我使用的API,这确实是一个需要数据的“GET”请求。否。您发送一个dict
{query\u key:query\u value}
,如图所示。不要试图手动准备查询字符串,除非你想乱搞
urllib.quote
,并且基本上处于一个痛苦的世界中。我很难相信API需要数据,因为这不能正确地播放HTTP。如果它真的这样做了,你不应该对该API有太多信心-如果任何缓存或代理起作用,它可能会严重崩溃。不过,当我只是将dict传递给params时,它不包括“record=”片段,否则它就会丢失。为了更清楚,wim正确地认为它需要在params中,最后的解决方案是:
params={“record”:json.dumps(data)}
 response = requests.get('http://example.com/sth', params={
                          'key':'value', 
                           'anotherkey':'anothervalue'
                         })