クライアントPCからHTTP POST で一旦サーバAで受け取った情報をサーバAから別のサーバBのサーブレットへPOSTするプログラムはどのように記述すればいいのでしょうか?サーバBではサーバAのIPアドレスをチェックするためクライアントPCからサーバBに直接POSTできません。
プログラムサンプルなどがあれば助かります。
なお、サーバAはMS NT4.0 IIS4です。

クライアントPC    ----->     サーバA  -----> サーバB
         http POST HTTP POST

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ASPでの方法ですと、HTMLを用意して、JavaScriptで強制的にコミットをかけてポストするという手があります。


<FORM NAME="aform" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="info" VALUE="***">
</FORM>
<SCRIPT LANGUAGE="JavaScript">
aform.submit();
</SCRIPT>
ちょっと反則気味ですが。。。
    • good
    • 0

ASPでどの程度のプログラムがかけるのか走りませんが、socket(winsock)を利用し、サーバーBに対して、TCP/IP通信で直接送信します。


具体的には、サーバーBのポート80に対してconnectし、HTTPプロトコルのヘッダ情報をCR+LF区切りで送信してください。
それで出来ます。(私はC言語をつかってますが....)
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPOSTで情報を他のサーバーに渡したい。

GETで情報を他のサーバーに転送するには
header("Location: http://abc.com/abc?data=1234");
って感じでできると思うのですが
POSTで送信しなければならないのでPOST送信方法を
教えてください。

なおクライアントに一瞬だけ表示させてjavascriptで
POSTのフォームを作って送らせる方法があるようですが
クライアントの環境に依存せずにできるようにしたいと思っています。

Aベストアンサー

socket使えばよいのでは。

参考URL:http://php.s3.to/man/function.fsockopen.html,http://www.stackasterisk.jp/tech/php/searchAction.do?cid=18

Q特定の値をPOST送信で他のサーバーに渡したい

あるPHPページを自動転送ページとし、転送先に特定の値をPOST送信したいと考えています。
同じような質問があり、fsockopenを使ってすると良いようなのですが、どうしても上手くいきません。
現状、POST送信は成功しているのですが、URLが自動転送ページのままで、転送先ページのテキストのみが表示されている状態です。
どうすれば転送先ページに完全に移ってしまえるでしょうか。
ご助力下さい。


<ソース>
$url = "http://hoge.co.jp/test.php";  //転送先URL
$method = "POST";
$headers = "POST http://hoge.co.jp/test.php HTTP/1.1\r\n";  //転送先URL
$postdata = "parm=ok";

$URL = parse_url($url);
if(!isset($URL['port'])){$URL['port'] = 80;}

//リクエストヘッダ
$request = $method." ".$URL['path']." HTTP/1.0\r\n";
$request .= $headers;
$request .= "Host: ".$URL['host']."\r\n";
$request .= "User-Agent: PHP/".phpversion()."\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Content-Length: ".strlen($postdata)."\r\n";
$request .= "\r\n";
$request .= $postdata;

//相手サーバへ接続
@$fp = fsockopen($URL['host'], $URL['port']);

// 接続失敗
if (!$fp) {die("ただいまメンテナンス中です。\n");}

//POSTで送信
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
$response .= fgets($fp, 4096);
}
fclose($fp);

//ヘッダ部分とボディ部分を分離
$DATA = split("\r\n\r\n", $response, 2);

//出力
echo "<!--\n".$request."\n-->\n";
echo "<!--\n".$DATA[0]."\n-->\n";
echo $DATA[1];

あるPHPページを自動転送ページとし、転送先に特定の値をPOST送信したいと考えています。
同じような質問があり、fsockopenを使ってすると良いようなのですが、どうしても上手くいきません。
現状、POST送信は成功しているのですが、URLが自動転送ページのままで、転送先ページのテキストのみが表示されている状態です。
どうすれば転送先ページに完全に移ってしまえるでしょうか。
ご助力下さい。


<ソース>
$url = "http://hoge.co.jp/test.php";  //転送先URL
$method = "POST";
$headers = "PO...続きを読む

Aベストアンサー

#1 です。
> 最後にheader("Location: {$url}");をいれると、一般向けページが表示されてしまったので、POST送信できていないようですT T
タイムラグという事無いですか?
相手のサーバの反応の関係で遅れているという可能性はありませんか?
postした後コンマ数秒遅らせてみたらどうでしょうか?

http://jp2.php.net/usleep
usleep(500000);
header("Location: {$url}");

別解として、メタタグやJavaScriptでリダイレクトする方法も考えられます(恐らくPHPよりは遅延すると思われます)。JavaScriptで遅延させると言うことも可能ですね。
echo <<<SCRIPT
<a href="{$url}">{$url}</a>へジャンプします。ジャンプしない場合は<a href="{$url}">クリック</a>してください。
<script type="text/javascript"><!--
setTimeout("location.href='{$url}'",500);
//-->
</script>
SCRIPT;

参考まで。

#1 です。
> 最後にheader("Location: {$url}");をいれると、一般向けページが表示されてしまったので、POST送信できていないようですT T
タイムラグという事無いですか?
相手のサーバの反応の関係で遅れているという可能性はありませんか?
postした後コンマ数秒遅らせてみたらどうでしょうか?

http://jp2.php.net/usleep
usleep(500000);
header("Location: {$url}");

別解として、メタタグやJavaScriptでリダイレクトする方法も考えられます(恐らくPHPよりは遅延すると思われます)。JavaScript...続きを読む


人気Q&Aランキング