2009-07-09 15 views
3

PHPスクリプトへのHTTPURLConnectionを作成し、そのスクリプトから返されたHTTP応答を取得します。 Perlでこれを行う方法はありますか?要するにPerlのHttpURLConnectionに似たものはありますか?

私は、次のPerlの同等をしたい:

  java.net.URL url = new java.net.URL(urlPath); 
      java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection(); 

      conn.setRequestMethod("POST"); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setUseCaches(false); 
      conn.setRequestProperty("content-type", "application/x-www-form-urlencoded"); 
      conn.setRequestProperty("Content-Length", Integer.toString(body.length())); 

      conn.setRequestProperty("Cookie", "ONTCred=" + cookie); 

      conn.connect(); 

      java.io.PrintWriter pw = new java.io.PrintWriter(conn.getOutputStream()); 
      pw.print(body); // "send" the body 
      pw.flush(); 
      pw.close(); 

      if (conn.getResponseCode() != java.net.HttpURLConnection.HTTP_OK) { 
        throw new java.io.IOException("Error on POST to " + url + ": " + conn.getResponseMessage()); 
      } 

      // for debugging, if you want to see the header info, uncomment this section 
      // for (String key : conn.getHeaderFields().keySet()) { 
      //  System.out.println("header: '" + key + "' = '" + conn.getHeaderField(key) + "'"); 
      // } 

私は同様のPerlモジュールを検索しようとしていますが、いずれかを見つけることができませんでした。 助けを借りてください。

+0

上記の例では、 'cookie'は文字列です –

答えて

6

LWPをお試しください:

# Create a user agent object 
use LWP::UserAgent; 
my $ua = LWP::UserAgent->new; 

# Create a request 
my $req = HTTP::Request->new(POST => $url); 
$req->content_type('application/x-www-form-urlencoded'); 

# cookies 
$ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" }); 

# Pass request to the user agent and get a response back 
my $res = $ua->request($req); 

# Check the outcome of the response 
if ($res->is_success) { 
    print $res->content; 
} else { 
    print $res->status_line, "\n"; 
} 
+0

あなたはなぜこのようにしていますか? $ ua-> cookie_jar({file => "$ ENV {HOME} /。cookies.txt"}); もう少し詳しく説明できますか? –

+0

@Sam See http://search.cpan.org/perldoc?HTTP::Cookies –

+2

@Sam、私はあなたが '$ ua-> cookie_jar({});'を使ってメモリ内のcookie jarを作成したいと思うし、 '$ ua-> cookie_jar-> set_cookie();'を呼び出してください。 –

関連する問題