1

次の投稿に従って、perlモジュールAnyEvent :: HTTPを使用して非同期HTTPリクエストを作成してみました:http ://www.windley.com/archives/2012/03/asynchronous_http_requests_in_perl_using_anyevent.shtml

ただし、プロキシを介して機能させることはできません...

    my $request;
    my $host = '<userid>:<pswd>@<proxyip>';
    my $port = '<proxyport>';
    my $headers = { ...                        
                    'Accept-Language'=> 'en-us,en;q=0.5',
                    'Accept-Charset'=> 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                    'Keep-Alive' => 300,
                    };

    $request = http_request(
      GET => $url,
      timeout => 120, # seconds
      headers => $headers,
      proxy => [$host, $port],
      mymethod
   );

$cv->end;
$cv->recv;    

上記のコードで次のエラーが発生します(プロキシの認証の詳細に置き換えた後)

   { 
      'Reason' => 'No such device or address',
      'URL' => 'www.google.com',
      'Status' => 595
    };

リクエストのプロキシ引数がなくても機能します。CPANページからhttp://metacpan.org/pod/AnyEvent::HTTP

595-接続確立中のエラー、プロキシハンドシェイク

このコードの問題を特定するのを手伝ってください。ありがとう!

4

1 に答える 1

3

$host自体にユーザー名とパスワードを入れることはできません。最初にそれらをbase64で手動でエンコードし、結果の文字列をProxy-Authorizationヘッダーに追加する必要があります。

$ echo -n user:pass | openssl enc -a
dXNlcjpwYXNz

次に、次の行をヘッダーに追加します。

my $request;
my $host = '<proxyip>'; #EDITED 
my $port = '<proxyport>';
my $headers = { ...                        
                'Accept-Language'=> 'en-us,en;q=0.5',
                'Accept-Charset'=> 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                'Keep-Alive' => 300,
                'Proxy-Authorization'=>'Basic dXNlcjpwYXNz' #EDITED
                };

$request = http_request(
  GET => $url,
  timeout => 120, # seconds
  headers => $headers,
  proxy => [$host, $port],
  mymethod

それならうまくいくはずです!

于 2012-10-01T11:47:56.483 に答える