HTTPアクセス

情報源

ActivePerlには、libwww-perlがパッケージとして含まれているので、ローカルの Perl/html/site/lib/lwpcook.html を参照すること。

サンプル

  • fileTinyProxy.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    !
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    -
     
     
     
     
     
     
     
     
     
    -
    |
    -
    |
    !
    !
    |
    |
    
    #!/usr/bin/perl
    # TinyProxy.pl
    # コマンドラインで指定した URI を utf8 としてファイルに保存。
     
    use strict;
    use warnings;
    use utf8;
    use Encode;
    use LWP::UserAgent;
    #use URI::Escape;
    use EscapeSlash;
     
    my $charsetConsole    = 'CP932';
    my $charsetFile        = 'UTF-8';
     
    # ファイル名/パス名として使用できない文字+α
    my %ConvSet = map{ $_ => '%' . uc( unpack( 'H02', $_ ) ) } split( //, '\\/*?|<>:,;% \"' );
     
    @ARGV = map{ decode( $charsetConsole, $_ ); } @ARGV;
     
    my $url = $ARGV[0] or die( "usage: TinyProxy.pl <URI>\n" );
    my $fileNameOut = $url;
    if ( $fileNameOut =~ m#^.*/$# ){
        $fileNameOut .= 'index.html';
    }
    $fileNameOut =~ s#^\w+://(.*)$#$1#;
    #$fileNameOut = uri_escape_utf8( $fileNameOut );
    $fileNameOut = escapeslash( $fileNameOut, \%ConvSet );
     
    binmode( STDIN,  ":encoding($charsetConsole)" );
    binmode( STDOUT, ":encoding($charsetConsole)" );
    binmode( STDERR, ":encoding($charsetConsole)" );
     
    open( my $OUT, ">:encoding($charsetFile)", encode( $charsetConsole, $fileNameOut ) ) 
        or die( "$fileNameOut: $!\n" );
    print $OUT getURI( $url );
    close( $OUT );
     
    exit();
     
    # --- Subroutine ---
    sub getURI {
        my( $URI ) = @_;
     
        my $ua = LWP::UserAgent->new;
        my $req = HTTP::Request->new( GET => $URI );
     
        # send request
        my $res = $ua->request( $req );
     
        # check the outcome
        if ( $res->is_success ){
            return $res->decoded_content;    # utf8フラグ付テキスト
        } else {
            return "Error: " . $res->status_line . "\n";
        }
    }
     
    # EOF
    

リンク


添付ファイル: fileTinyProxy.zip 724件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 05 Dec 2013 12:54:55 JST (1687d)