2013-04-17 26 views
0

看看其他線程,但無法從中建立任何內容。帶代理的wxpython httplib顯示400個錯誤請求

我有網址的,我想獲取的HEAD狀態和之前進一步操作檢查的列表。我目前使用httplib的代碼工作正常(其他部分),但是我需要確保代碼在代理後面工作,這是我遇到問題的地方。

代碼工作併產生輸出(如果一部分),但是從網址的輸出狀態爲「400錯誤的請求」,這似乎是它沒有被正確代理。

dlg = wx.MessageDialog(self, "Are you connected to a proxy?", "LAN check", wx.YES | wx.NO | wx.ICON_INFORMATION) 
    if dlg.ShowModal() == wx.ID_YES: 
     self.urlFld.SetValue("") 
     for line in self.myList: 
      url = urlparse.urlparse(line) 
      conn = httplib.HTTPConnection("myproxy.com", 8080) 
      conn.request("HEAD", url.path) 
      r1 = conn.getresponse() 
      r1 = r1.status, r1.reason 
      r1 = str(r1) 
      self.urlFld.AppendText(url.scheme + "://" + url.hostname + url.path + "\t\t\t" + r1 + "\r") 
    else: 
     self.urlFld.SetValue("") 
     for line in self.myList: 
       url = urlparse.urlparse(line) 
       conn = httplib.HTTPConnection(url.hostname) 
       conn.request("HEAD", url.path) 
       r1 = conn.getresponse() 
       r1 = r1.status, r1.reason 
       r1 = str(r1) 
       self.urlFld.AppendText(url.scheme + "://" + url.hostname + url.path + "\t\t\t" + r1 + "\r") 

回答

1

IIRC,如果您使用的是代理服務器,您需要的完整URL傳遞給HEAD方法...

if dlg.ShowModal() == wx.ID_YES: 
    self.urlFld.SetValue("") 
    for line in self.myList: 
     conn = httplib.HTTPConnection("myproxy.com", 8080) 
     conn.request("HEAD", line) 
     r1 = conn.getresponse() 

...否則它沒有辦法知道哪主機連接。

+0

必須厭倦了幫助我!但它的工作!再次感謝,非常感謝。現在只有問題(不是一個巨大的問題)是myList(https)中的https://www.facebook.com URL仍然返回400錯誤請求,其他所有內容都沒有問題。你對這個問題的看法是什麼,而不是解決即時消息只是試圖理解它 – jerrythebum

+0

@directpixel它可能與https:// www.facebook.com'的問題是它是一個安全的(HTTPS)頁面,你的代理服務器未通過安全連接訪問。您可能可以重新配置代理以允許它,或者您可以將URL更改爲「http:// www.facebook.com」,以便通過非安全的URL訪問它。 – Aya