using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
namespace WebRequest
{
/// <summary>
/// Form1 の概要の説明です。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textURL;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox response;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox comboBoxEncoding;
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
/// <summary>
/// 使用されているリソースに後処理を実行します。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
System.Configuration.AppSettingsReader configurationAppSettings =
new System.Configuration.AppSettingsReader();
this.textURL = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.response = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.comboBoxEncoding = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// textURL
//
this.textURL.Location = new System.Drawing.Point(24, 8);
this.textURL.Name = "textURL";
this.textURL.Size = new System.Drawing.Size(328, 19);
this.textURL.TabIndex = 0;
this.textURL.Text = "";
//
// button1
//
this.button1.Location = new System.Drawing.Point(384, 8);
this.button1.Name = "button1";
this.button1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.button1.Size = new System.Drawing.Size(64, 24);
this.button1.TabIndex = 1;
this.button1.Text = "Get";
this.button1.Click += new System.EventHandler(this.OnGet);
//
// response
//
this.response.AcceptsReturn = true;
this.response.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.response.Location = new System.Drawing.Point(24, 72);
this.response.Multiline = true;
this.response.Name = "response";
this.response.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.response.Size = new System.Drawing.Size(424, 264);
this.response.TabIndex = 2;
this.response.Text = "";
this.response.WordWrap = false;
//
// label1
//
this.label1.Location = new System.Drawing.Point(32, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(64, 24);
this.label1.TabIndex = 4;
this.label1.Text = "Encoding";
//
// comboBoxEncoding
//
this.comboBoxEncoding.Items.AddRange(new object[] {
"Shift JIS",
"UTF-8",
"UTF-7",
"Unicode","EUC"});
this.comboBoxEncoding.Location = new System.Drawing.Point(96, 40);
this.comboBoxEncoding.Name = "comboBoxEncoding";
this.comboBoxEncoding.Size = new System.Drawing.Size(120, 20);
this.comboBoxEncoding.TabIndex = 5;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(456, 350);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.comboBoxEncoding,
this.label1,
this.response,
this.button1,
this.textURL});
this.Name = "Form1";
this.Text = "WebAccess";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void OnGet(object sender, System.EventArgs e)
{
System.IO.Stream stream = null;
System.IO.StreamReader textReader = null;
// 現在のカーソルを保存しておく。
Cursor cursor = this.Cursor;
// 使用するエンコーディングを ListBoxから取得する。
// System.Text.Encoding.Default は、Shift JIS
System.Text.Encoding enc = System.Text.Encoding.Default;
if (this.comboBoxEncoding.Text == "Shift JIS")
enc = System.Text.Encoding.Default;
else if (this.comboBoxEncoding.Text == "UTF-8")
enc = System.Text.Encoding.UTF8;
else if (this.comboBoxEncoding.Text == "UTF-7")
enc = System.Text.Encoding.UTF7;
else if (this.comboBoxEncoding.Text == "Unicode")
enc = System.Text.Encoding.Unicode;
else if (this.comboBoxEncoding.Text == "EUC")
enc = System.Text.Encoding.GetEncoding("euc-jp");
else
enc = System.Text.Encoding.Default;
try
{
// カーソルを WaitCursor にする。
this.Cursor = Cursors.WaitCursor;
System.Net.WebRequest req = HttpWebRequest.Create(this.textURL.Text);
WebResponse res = req.GetResponse();
// HttpWebRequest からストリームを取得する。
stream = res.GetResponseStream();
// 1行ごとに扱いたいので、StreamReader にする。
textReader = new System.IO.StreamReader(stream, enc);
String str;
// 高速化のため、StringBuilder を使う。
System.Text.StringBuilder text = new System.Text.StringBuilder("");
while( true )
{
str = textReader.ReadLine();
if (str == null)
break;
// TextBoxの改行は "\r\n"。 "\n"だけでは改行しない。
text.Append( str + "\r\n");
}
// StringBuilder で全テキストを構成後にTextBoxに貼り付ける。
this.response.Text = text.ToString();
}
catch (Exception exc)
{
// フォーマットエラーなどの例外処理
MessageBox.Show(exc.Message, this.Name, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
throw exc;
}
finally
{
textReader.Close();
stream.Close();
// カーソルを元に戻す。
this.Cursor = cursor;
}
}
}
}
|