2014-12-02 75 views
0

我在Python中使用requests模塊,似乎遇到了在URL後面添加尾部斜槓的問題。我試圖使用不同的方法(替換,正則表達式)刪除它,但它似乎沒有任何區別。一些細節已經取代隱私理由顯然:)Python HTTP請求URL結束Slash

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 

當我們把這個URL,並把它放在一個瀏覽器,並刪除'/'它工作正常的'?'之前。例如:http://example.com:8000?....工程,但http://example.com:8000/?...沒有。但我無法解決如何從Python腳本中刪除掉URL中的尾部斜線。

回答

1

您的服務器出現故障,而不是requests磁帶庫。

的HTTP RFC狀態,在section 3.2.2

如果絕對路徑中不存在的URL,它必須被給定爲「/」作爲請求URI用於資源

沒有路徑的URL(如http://X.X.X.X:8000)沒有絕對路徑組件,所以根據標準設置爲/。如果您的服務器響應不同沒有路徑,那麼它違反了該標準。

有沒有這方面的解決方法,短缺的requests源代碼修補remove the default value for the path portion of a URL。這將必須在other locations too;我沒有做詳盡的搜索。

+0

嗨馬丁,看起來你是對的,這個問題的根源比簡單的修復更深。即使我的問題沒有解決,我是否應該將您的回答標記爲正確?或者我應該離開它,我不確定這種東西是什麼堆棧禮儀:) – dlyxzen 2014-12-02 15:16:01

+0

這個複選標記表示你找到了一個*最有用*的帖子。無論是否你發現我的帖子有幫助完全取決於你!它並不一定意味着「解決問題」。你的*問題*已經解決了,有點。 – 2014-12-02 15:17:44