2013-04-17 1 views
0

Посмотрел на другие темы, но ничего не смог построить из него.wxpython httplib с прокси показывает 400 плохой запрос

У меня есть список URL-адресов, которые я пытаюсь получить статус HEAD и проверить перед дальнейшими манипуляциями. Мой текущий код с httplib работает отлично (еще часть), однако мне нужно убедиться, что код работает из-за прокси-сервера, вот где у меня проблемы.

Код работает и производит вывод (если часть), но статус вывода из URL-адресов - это «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

должно устать помогать мне! Однако это сработало! Еще раз спасибо, очень признателен. Теперь только проблемы (а не массовые) заключались в том, что https://www.facebook.com URL в myList (https) возвращает 400 плохих запросов, все остальное в порядке. как вы думаете по этому вопросу, а не для того, чтобы исправить их, просто заинтересованы в том, чтобы понять это. – jerrythebum

+0

@directpixel. Возможно, проблема с 'https: // www.facebook.com' заключается в том, что это безопасная страница (HTTPS) и ваша прокси-сервер не получает доступа через безопасное соединение. Возможно, вы сможете перенастроить прокси-сервер, чтобы разрешить его, или просто изменить URL-адрес на «http: // www.facebook.com», чтобы получить доступ к нему через небезопасный URL-адрес. – Aya

 Смежные вопросы

  • Нет связанных вопросов^_^