- PR -

ASP.NETからCGIに画面遷移

1
投稿者投稿内容
50銭
会議室デビュー日: 2006/09/28
投稿数: 6
投稿日時: 2006-09-28 19:15
いつも拝見させて頂いています。

ASP.NET2.0C#で開発を始めたのですが、Webシステムも、.NETもほぼ初めての為、
検討違いでしたらすみません。

私が実行したい処理は
1.ASP.NETからCGIにパラメーターを渡す。
2.パラメーターを渡したCGIを開く
以上です

思考錯誤しながら組んでみたのですが、POSTのやり方はよく見るのですが、画面を開く方法が分かりません。
POSTが成功していれば画面が開くものなのでしょうか?

以下にソースを掲載させていただきます。

    string URL = "http://xxxxxxxxxx";

Encoding enc = Encoding.UTF8;
string param = string.Empty;

string user_name = string.Empty;
string user_mail_add = string.Empty;

user_name = "太郎";
user_mail_add = "xx@xxx.co.jp";

//ポスト・データの作成
Hashtable ht = new Hashtable();
ht["name"] = user_name;
ht["address"] = user_mail_add;

param += string.Format("{0}={1}&", "user_neme", ht["name"]);
param += string.Format("{0}={1}", "user_mail_add", ht["address"]);

//ASCIIに変換UTF8
byte[] data = Encoding.ASCII.GetBytes(param);

//WebRequestの作成
System.Net.WebRequest req = WebRequest.Create(URL);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;

//データをPOST送信するためのStreamを取得
System.IO.Stream reqStream = req.GetRequestStream();
//送信するデータを書き込む
reqStream.Write(data, 0, data.Length);
reqStream.Close();

// レスポンスの取得と読み込み
System.Net.WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, enc);
string html = sr.ReadToEnd();
sr.Close();
resStream.Close();

Console.WriteLine(html);

以上です。
Console.WriteLine(html);をresponse.write(html)に変更すると画面が表示されますが、アドレスが変更されていません。
基本的に実行している処理内容が間違っているのでしょうか?

PostBackUrlを使用するものなのでしょうか?
宜しくお願いいたします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-09-28 19:50
引用:

50銭さんの書き込み (2006-09-28 19:15) より:
1.ASP.NETからCGIにパラメーターを渡す。
2.パラメーターを渡したCGIを開く


ASP.NETは広義のCGIのひとつです。ここで言うCGIとは何者ですか?
CGIを開くとは、どのような動作を指していっていますか?CGIをWEBサービスとしてASP.NETで書かれたプログラム内部で利用したいと言うことですか?それともCGIとASP.NETの両方で書かれたページを両方利用したWEサイトを想定していますか?

後者ならASP.NET内部でしのごのせずに、CGIを呼び出す為のURLを<a>-</a>タグに書けばよいと思う。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
50銭
会議室デビュー日: 2006/09/28
投稿数: 6
投稿日時: 2006-09-28 20:08
早速の返答有難うございます。
よく理解していない為、質問が曖昧ですみません。

>ASP.NETは広義のCGIのひとつです。ここで言うCGIとは何者ですか?
Perlです。

>CGIを開くとは、どのような動作を指していっていますか?CGIをWEBサービスとしてASP.NETで書かれたプログラム内部で利用したいと言うことですか?それともCGIとASP.NETの両方で書かれたページを両方利用したWEサイトを想定していますか?

動作内容としましては、ASP.NETからパラメータで渡し、
その情報を元にPerlのWebサイトを開いて処理をするというものです。
その後、PerlのサイトからXMLで応答が帰ってきます。
よって前者だと思います。

宜しくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-09-29 00:25
.NETのWEBサーバからperlページにリクエストを出したのならレスポンスが返る先は.NETのサーバ
ですよね(この場合、perl側がサーバで.NETサーバがクライアントと考えるとよい)。
で、perlから受け取った内容をもとにブラウザにレスポンスを返しているのは.NETだから
「アドレスが変更されていません。」は正しい動作です。

ブラウザにperlのページを直接表示させたいのなら甕星さんのおっしゃるように
普通に<a>タグを書くか、POSTさせたいならそのような<form>を書くのでしょう。
50銭
会議室デビュー日: 2006/09/28
投稿数: 6
投稿日時: 2006-09-29 11:29
甕星さん・べるさんご意見有難う御座いました。

何とか解決する事が出来ました。
どうやら私が作成していたPGは思っていた処理とは違ったようですね。
Postの処理ではWebRequestを使うとどこかで読んで、それを使わなければいけないという概念にとらわれていました。
>(この場合、perl側がサーバで.NETサーバがクライアントと考えるとよい)。
考え方も悪かったようです。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25582&forum=7
を参照にしました。
1

スキルアップ/キャリアアップ(JOB@IT)