Hi,

I'm new to this mailing list, and haven't yet found where y'all keep
the good documentation about dealing with an authenticating proxy
using LWP::UserAgent.

I have modeled a subclass approach on Gisle Aas' lwp-request.
You can see the complete script at
http://www.animalhead.com/maint_ip_world_db

maint_ip_world_db works fine on my FreeBSD server and Mac OS X
Leopard home system.  Neither of these connect through an
authenticating proxy.

When I try this script from work under Cygwin, there is such a proxy
between my machine and the Internet.  After the execution of the
following statements of interest:

my $ua = ourLWP->new (timeout => 30); # the start of the web page above shows ourLWP
if ($proxy) {                                     # $proxy is false
  $ua->proxy(['http', 'ftp'], $proxy->as_string);
}
$resp = $ua->head($url);

I get a 500 "internal response", as shown in the following debugger dumps:

  DB<11> x $resp
0  HTTP::Response=HASH(0x10723bb0)
'_content' => '500 Can\'t connect to static.wipmania.com:80 (Bad hostname \'static.wipmania.com\')'
   '_headers' => HTTP::Headers=HASH(0x10723b98)
      'client-date' => 'Thu, 25 Feb 2010 00:44:22 GMT'
      'client-warning' => 'Internal response'
      'content-type' => 'text/plain'
'_msg' => 'Can\'t connect to static.wipmania.com:80 (Bad hostname \'static.wipmania.com\')'
   '_rc' => 500
   '_request' => HTTP::Request=HASH(0x106a2050)
      '_content' => ''
      '_headers' => HTTP::Headers=HASH(0x106a2038)
         'user-agent' => 'libwww-perl/5.834'
      '_method' => 'HEAD'
      '_uri' => URI::http=SCALAR(0x1042dca0)
         -> 'http://static.wipmania.com/static/worldip.en.text.zip'
  DB<12> x $ua
0  ourLWP=HASH(0x105dde48)
   'def_headers' => HTTP::Headers=HASH(0x105dd938)
      'user-agent' => 'libwww-perl/5.834'
   'handlers' => HASH(0x10635168)
      'response_header' => HTTP::Config=ARRAY(0x106797e8)
         0  HASH(0x10679e18)
            'callback' => CODE(0x105ddde8)
-> &LWP::UserAgent::__ANON__[/usr/lib/perl5/ vendor_perl/5.10/LWP/UserAgent.pm:611] in /usr/lib/perl5/vendor_perl/ 5.10/LWP/UserAgent.pm:590-611 'line' => '/usr/lib/perl5/vendor_perl/5.10/LWP/ UserAgent.pm:612'
            'm_media_type' => 'html'
            'owner' => 'LWP::UserAgent::parse_head'
   'local_address' => undef
   'max_redirect' => 7
   'max_size' => undef
   'no_proxy' => ARRAY(0x105e5048)
        empty array
   'protocols_allowed' => undef
   'protocols_forbidden' => undef
   'proxy' => HASH(0x1060eb60)
        empty hash
   'requests_redirectable' => ARRAY(0x105ddce0)
      0  'GET'
      1  'HEAD'
   'show_progress' => undef
   'timeout' => 30
   'use_eval' => 1
  DB<13>

Working through a callback in this way is more indirect than I had hoped for. I would have hoped, if my request got a 407 (Proxy Authentication Required), there would be a method or two that I could invoke to deal with the situation.
Perhaps something named LWP::Authen::Basic which is listed in the
LWP documentation, but without a link so is it real?

When I copy the URI at the end of the dump of $resp, and paste it in a
browser, the content shows up fine, which fits in with the overall script
working fine on my non-proxy, non-Cygwin systems.

Suggestions about how to debug this problem will be much appreciated.

Thanks,
cmac

Reply via email to