• ベストアンサー

CGIから別のCGIへPostするには?

こんにちは。 a.cgiにアクセスがあったらb.cgiに<data=hoge>というデータを postしたいのですが、どうすればいいのですか? よろしくお願いします。

  • CGI
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

CGIの言語がPerlだとして、 LWP HTTP::Request::Common を使う例。 use LWP::UserAgent; use HTTP::Request::Common qw(POST); $url = "http://hogehoge/cgi-bin/b.cgi"; %formdata = ('data' => 'hoge'); $request = POST($url,[%formdata]); $ua = LWP::UserAgent->new; $res = $ua->request($request);

hakoneko2
質問者

お礼

ありがとうございます。 ##################################### #!/usr/bin/perl use LWP::UserAgent; $url = "b.cgi"; %formdata = ('data' => 'hoge'); $request = POST($url,[%formdata]); $ua = LWP::UserAgent->new; $res = $ua->request($request); #################################### としましたが、以下のメッセージが出ました。 Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./a.cgi line 2. BEGIN failed--compilation aborted at ./a.cgi line 2. これはどうしようもないのでしょうか?

その他の回答 (3)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.4

書き忘れたのでもうひとつ > $url = "b.cgi"; とされていますが、これではダメです。 LWPは普通のブラウザ同様にHTTPでアクセスするものですから http://~とちゃんとURLで記述してください。 (そもそもそうでないとPOST/GETで投げることなんてできません)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

> 以下のメッセージが出ました。 そのまんまエラーメッセージの通りです。 LWP::UserAgentがない(インストールされていない)ということなのでlibwwwperl(LWP)をインストールしてください。 http://search.cpan.org/~gaas/libwww-perl-5.805/

hakoneko2
質問者

お礼

ありがとうございます。 レンタルサーバーでインストールできないのであきらめます。 ありがとうございました。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

GETは不可ですか?

hakoneko2
質問者

お礼

ありがとうございます。 ポスト先は私の管理ではないので不可です

関連するQ&A

  • フォーム以外からCGIにPOSTする方法

    CGIプログラム(便宜的にPROGRAM_A)にデータを渡す方法はGETとPOSTがあるかと思います。 そこで、フォーム以外(perlプログラム(便宜的にPROGRAM_B))から、POSTを使用してPROGRAM_Aにデータを渡すことは可能でしょうか。 教えてください。 PROGRAM_B ---(POST)---> PROGRAM_A

    • 締切済み
    • CGI
  • リンクからのPOST送信について

    <a href="hoge.cgi?aaa=bbb">hoge</a> この場合、リンクをクリックしたらGETで送られるとおもうのですが、 POSTで送るにはどうしたらいいのでしょうか?

    • ベストアンサー
    • Perl
  • CGIから別サーバーのCGIの呼び出し

    以下の二つのサーバーでCGIを動作させようと考えています。  サーバーA:ユーザーからアクセスできる。  サーバーB:サーバーAからアクセスでき、ユーザーからはアクセスできない。 この環境で (1)サーバーAでリクエストを受け、簡単な処理をする。 (2)サーバーA上のCGIからサーバーB上のCGIを呼び出す。 (3)サーバーB上で処理(etc. メールの送信)を行い、処理結果をサーバーAのCGIに返す。 (4)サーバーA上で簡単な処理を行い、結果をユーザーに表示する というような処理を考えています。 perlでは、このような処理を実装することは可能でしょうか? サーバーAからサーバーBにあるスクリプトファイルを読み込んで、サーバーAで実行するということはできそうなのですが、サーバーB上のCGIはサーバーBで実行するというようなことができるのかがわかりません。 初心者的な質問で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • Ruby CGI パラメータ

    rubyでCGIのパラメータを一つの変数に&でつないで格納したいです。 (パラメータなしの場合は""にしたい。) ex1) hoge.cgi →para=>"" ex2) hoge.cgi?a=1 →para=>"a=1" ex3 hoge.cgi?a=1&b=2 →para=>"a=1&b=2" どう書いたらよいでしょうか?

  • CGI:method="post"でもGETになる

    CGIで標準入力によりフォームデータを取得できないため、環境変数%ENV内の値を 調べましたところ、入力フォーム(html)のformタグでmethod="POST"と明示しているにも 拘らず、REQUEST_METHODの値がGETになっており、POST用のCONTENT_LENGTHも GET用のQUERY_STRINGも共に空になっております。 htmlでmethod="GET"と指定した場合には、REQUEST_METHODの値は正しくGETになり QUERY_STRINGからフォームデータを取得できます。 同じCGIをPC上のApache2.4でテストした結果、REQUEST_METHODはhtmlのmethod=~で 指定した通り正しくPOSTまたはGETとなり、それぞれフォームデータを 取得できることを確認いたしております。 この点についてプロバイダに問合せいたしましたが、サポート対象外ということで、 回答を得ることができませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただけないでしょうか、お伺いいたします。 (1)ホスト動作環境 a.CGIサーバ:Apache b. perl 5.10系 (2)PC動作環境 a.OS: Windows 7 b.ブラウザ: Internet Eexplorer 11 c.CGIサーバ: Apache 2.4 d. Activeperl 5.20

    • 締切済み
    • CGI
  • POSTで<a hrefを送る方法について

    POSTで <a href=sample.cgi?md=aa&tx=zz~>hoge</a> <a href=sample.cgi?md=bb&tx=yy~>hoge2</a> <a href=sample.cgi?md=cc&tx=xx~>hoge3</a> <a href=sample.cgi?md=dd&tx=ww~>hoge4</a> を送る方法でjavascriptとの組み合わせで出来るのかな? と思い検索したら <form action="./sample.cgi" method="POST" name="post"> <input type="hidden" name="md" value="aa"> <input type="hidden" name="tx" value="zz">           : <a href='#' onClick="document.post.submit();return false">hoge</a> <form action="./sample.cgi" method="POST" name="post2"> <input type="hidden" name="md" value="bb"> <input type="hidden" name="tx" value="yy">           : <a href='#' onClick="document.post2.submit();return false">hoge2</a> このような手法が見つかりました これだと行数が多くなり、なんとなくすっきりしません どなたかいい解決方法を教えてください よろしくお願いします

    • ベストアンサー
    • HTML
  • Perlから他のcgiへPOSTでデータ送信

    この手の質問はたくさんありましたが、具体的な解決がなく、よく理解できなかったので質問させていただきます。 Perlで受け取ったデータを他のcgi(hoge.cgi)にPOSTで送るにはどうすればよいのでしょうか? JavaScriptを吐いて処理する方法もありますが、JavaScriptを使用せずにする方法を求めています。 ソケットを使うらしいのですが、その当たりの知識が全くないので過去質問などを見てもほとんど理解できません。 どなたか分かりやすく教えていただけないでしょうか?

  • PHPから他のcgiにpostしたいのですが

    postされたデータをPHPで加工して、自動的にその結果をperlで作られたcgiにpostしようと思っています。 データを受け取って加工するところまでは悪戦苦闘しながらできたのですが、「はて、どうやって渡したらいいんだろう?」と、頭が回らなくなってしまいました。 簡単なことなんでしょうが検索しても上手く見つけられなかったので、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 再度:cgiから別のcgiへの変数の渡し方

    再度教えていただきたいのですが。 前回 http://oshiete1.goo.ne.jp/kotaeru.php3?q=111919 で 1階層目は動いたのですが、2階層目では動きませんでした ブラウザ(IE)のアドレスで何かをさわって更新すると受け取れます。 TOP.CGIより <frame src=\"./B.cgi?UserID=$USR\" name=\"ue\" > A.CGIで受け取れました A.CGI より <FORM METHOD=POST ACTION=\"WT.CGI?U=$USR\" TARGET=\"_top\"> WT_CGIで受け取れませんでした。(ここでアドレス欄をさわって更新) WT_CGIより Location: ./TOP.CGI?U=$USR TOP.CGIで受け取れました。

    • ベストアンサー
    • CGI
  • 別サーバーのcgiへバイナリデータを送る方法

    サーバーAに、バイナリデータがあります。 これをサーバーBのcgiへデータを渡したいのですが、方法を教えてください。 HTMLで書くと、以下のようにc:\data.binを<form>でcgiに送信するようなイメージです。しかし、<input file>タグではセキュリティーのためvalueでファイルを指定することができません。 ここのc:\data.binは、ファイル名が変動するため、人間に手で選択させることはさせたくないです。 <form action="http://www.サーバーB.jp/Server_B.cgi" enctype="multipart/form-data" method="post"> <input type="file" value="c:\data.bin"> <input type="submit" value="サーバーAに送信"> </form> これを、cgi(Perl)を使用して、同じようなものを書くことはできますでしょうか? httpヘッダを書いて、その後ろにデータを送信して、、といった感じでできるような気がするのですが、 httpヘッダの書き方が分かりません。 受け側のサーバーBのcgiでは、CGI_Lite.pmを使用してバイナリデータを受信します。 通常、バイナリのデータ送信はftpを使用するのだと思いますが、相手側がftpに対応していません。 よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう