我在Python中使用requests
模块,似乎遇到了在URL后面添加尾部斜杠的问题。我尝试使用不同的方法(替换,正则表达式)删除它,但它似乎没有任何区别。有些细节显然已取代隐私原因:)
url = 'http://example.com:8000'
payload = {}
payload['summary'] = "test"
payload['service'] = 10
payload['template'] = 'XXX11112222'
payload['user_name'] = 'john_smith'
payload['justification'] = 'required'
payload['start_date'] = '1417737600'
payload['end_date'] = '1417759200'
r = requests.post(url, params=payload)
print(r.url)
打印出来的URL就是这样。
http://X.X.X.X:8000/?end_date=1417759200&business_justification=required&service=10&summary=test&template=XXX11112222&user_name=john_smith&start_date=1417737600
并给我这个回应。
200
400 No requested_service or service Parameter Provided
当我抓取该网址并将其放入浏览器并在'/'
之前移除'?'
时,它可以正常工作。例如:http://example.com:8000?....
有效,但http://example.com:8000/?...
没有。但我无法弄清楚如何从Python脚本中删除URL的尾部斜杠。
答案 0 :(得分:1)
您的服务器出现故障,而不是requests
库。
HTTP RFC在section 3.2.2中声明:
如果URL中没有abs_path,则必须将其作为" /"当用作资源的Request-URI时
没有路径的网址(例如http://X.X.X.X:8000
)没有绝对路径组件,因此根据标准将其设置为/
。如果您的服务器在无路径时给出的响应方式不同,那么它就违反了该标准。
除了将requests
源代码修补到remove the default value for the path portion of a URL之外,没有解决方法。这必须在other locations too中完成;我没有进行详尽的搜索。