テストにはまだまだ使える(重宝する) AN HTTP Server の正しい使用方法 単純に、WEB アプリケーション初心者にブラウザとサーバーのやり取りを知ってもらう為に( 今は、開発者ツールがあるので途中の解説がしやすいですし )、C# で作った EXE をそのままブラウザで実行させます。 基本設定 EXE の列の『一般パスでも実行する』にチェックします次に、一般パスに C# で作成された Debug フォルダを登録します。
後は、loclhost から実行するだけです。 ソースコード
using System;
using System.Collections;
using System.Text;
using System.Web;
namespace cgi_test
{
class Program
{
static void Main(string[] args)
{
string formtype = "POST";
string[] param = { };
// ******************************
// Console.WriteLine を UTF8 で
// ******************************
Console.OutputEncoding = Encoding.UTF8;
// ******************************
// メソッド
// ******************************
string method = Environment.GetEnvironmentVariable("REQUEST_METHOD");
// ******************************
// GET
// ******************************
if (method == "GET")
{
// ******************************
// QUERY_STRING
// ******************************
string query_string = System.Environment.GetEnvironmentVariable("QUERY_STRING");
// URL のみの場合はデータ無しの QUERY_STRING を用意する
if (query_string == "" )
{
query_string = "field1=&field2=";
}
// & で分割して key=value の文字列の配列を作成する
param = query_string.Split('&');
}
// ******************************
// POST
// ******************************
if (method == "POST")
{
string line;
// POST 時は必ず key=value の文字列が存在する
line = Console.ReadLine();
param = line.Split('&');
}
// = で区切って key と value が配列の 0 と 1 にセットされる
string[] key_value = { };
// ******************************
// key と value の格納
// ******************************
Hashtable field = new Hashtable();
foreach (string key_value_set in param)
{
key_value = key_value_set.Split('=');
// key がある場合は、Hashtable に格納する
if (key_value[0] != "") {
// System.Web を参照して using System.Web; で HttpUtility.UrlDecode
// %エンコードを元に戻す
field.Add(key_value[0], HttpUtility.UrlDecode(key_value[1]));
}
}
// ******************************
// HTTP ヘッダ
// PHP の session_cache_limiter
// ******************************
Console.WriteLine("Content-Type: text/html; charset=utf-8");
Console.WriteLine("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
Console.WriteLine("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
Console.WriteLine("Pragma: no-cache");
Console.WriteLine();
string message = "<div>こんにちは世界</div>";
// ******************************
// HTML
// $ で変数埋め込みのヒアドキュメント
// ******************************
string html = $@"<!DOCTYPE html>
<html>
<head>
</head>
<body>
{message}
<form method='{formtype}'>
<p>氏名 : <input type='text' name='field1' value='{field["field1"]}'></p>
<p>フリガナ : <input type='text' name='field2' value='{field["field2"]}'></p>
<p>送信 : <input type='submit' name='send' value='送信'></p>
</form>
</body>
</html>";
// 作成した HTML を出力する
Console.WriteLine(html);
}
}
}
|
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : System.Data.Odbc によるデータベースのテーブルからのデータ取得処理( サンプルの SQL は MySQL 用です )
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : System.Data.Odbc データ取得(SELECT)処理( MySQL ) : ※ using 無し( Dispose 実行 )
- C# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する
- C# : SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する
- C# : DataGridView に TKMP.DLL の IMAP(POP3) で受信したメールを非同期に表示する( 添付ファイルも取得 )
- C# : TKMP.DLLを使った、メール送信テンプレート
- C# と VB.net : TKMP.DLL を使って IMAP でメール本文の一覧を取得する( コンソール )
- C# でDataTable と DataSource を使用して、DataGridView にデータを表示するテンプレート( 行をダブルクリックしてダイアログを表示して行データを処理 )
- (C#) / VS2010 または VS2012 : TKMP.DLL(3.1.2 または 3.1.8)を使った、『さくらインターネット』用メール送信テンプレート
- C# でDXライブラリを使って簡単なシューティングをクラス化して標準化 / メインループとプレイヤー (4)


次に、一般パスに C# で作成された Debug フォルダを登録します。
後は、loclhost から実行するだけです。
ソースコード




