//もしかすると名前空間足りないかも
using System.Text;
using System.IO;
using System.Net;
using System.Web;
using System.Collections;//相手のCGIはeuc-jpで書かれています。
Encoding encEuc = Encoding.GetEncoding(“euc-jp”);//POSTするデータの作成、URLエンコードが必要です。
byte[] data = Encoding.ASCII.GetBytes(“data=” + HttpUtility.UrlEncode(“C#からベーシック認証の向こうにPOSTしてみました。”, encEuc));//WebRequestの作成
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(CGIのURL);//POSTでURLエンコードされたデータを送信しますという宣言
webreq.Method = “POST”;
webreq.ContentType = “application/x-www-form-urlencoded”;//ベーシック認証使うよ宣言と、次にアカウントとパスワード
webreq.PreAuthenticate = true;
NetworkCredential network = new NetworkCredential(アカウント,パスワード);
webreq.Credentials = network;//何バイト送るよ
webreq.ContentLength = data.Length;//送信ストリーム
Stream webreq_stream = webreq.GetRequestStream();
webreq_stream.Write(data, 0, data.Length);
webreq_stream.Close();//受信ストリーム
WebResponse webres = webreq.GetResponse();
Stream webres_stream = webres.GetResponseStream();//受信ストリームの読み込みと、クローズ
StreamReader stream = new StreamReader(webres_stream, encEuc);
string strGetData = stream.ReadToEnd();
stream.Close();
webreq_stream.Close();//受信したら書き出そう
System.Console.Write(strGetData);
Webサービス使えない状況だとやっぱりCGI経由になるわけですが、大事なデータはやっぱりベーシック認証なんかで守られてるわけですよ。しかもGETでクエリつけたらログに残っちゃいますしね。
というわけで、上記の手法を探っておりました。