如何在python中获取请求库的确切url

如何在python中获取请求库的确切url,python,python-requests,Python,Python Requests,我正在使用python的请求库并发出这样的请求 r = requests.get(solrShard1, params = solrParams) 现在我想得到请求库正在创建的确切url。我试过使用 req = requests.Request('POST',solrShard1, params = solrParams) prepared = req.prepare() print >>sys.stderr, "REQUEST START" print >>sys.s

我正在使用python的请求库并发出这样的请求

r = requests.get(solrShard1, params = solrParams)
现在我想得到请求库正在创建的确切url。我试过使用

req = requests.Request('POST',solrShard1, params = solrParams)
prepared = req.prepare()
print >>sys.stderr, "REQUEST START"
print >>sys.stderr, req.url
print >>sys.stderr, "REQUEST END"

但它只打印url,而不是确切的url以及参数和所有内容。如何获取准确的URL

您显示的是来自请求对象的URL,而不是准备好的对象

prepare
方法的调用不会改变对象本身,而是返回prepared对象,您已经将其分配给
prepared
变量,但您没有在任何地方使用它

只需更改以下代码,它就可以工作:

print >>sys.stderr, "REQUEST START"
print >>sys.stderr, prepared.url
print >>sys.stderr, "REQUEST END"
我尝试了下面的代码,对我来说效果很好:

req = requests.Request('POST', 'http://google.com', params={'param1': 10})
prep = req.prepare()
print(prep.url)

>> 'http://google.com/?param1=10'

您正在发送POST请求。在POST请求中,url中没有任何参数,但请求正文中有任何参数

尝试使用以下内容打印请求正文:

print(prepared.data)

你在打电话。在POST调用中,参数不会附加到URL。在GET调用中,是。@JRodDynamite我确实尝试了GET to,但它仍然没有使用我尝试过的参数打印url,它对我有效:req=requests.Request('POST','',params={'param1':10});prep=req.prepare();打印(prep.url);>>“”如果设置“data”参数而不是“params”参数,则该参数不起作用。@danielfranca是的,它起作用了。我正在打印req.url而不是prepared.url。