ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Visual Studio 2010 と 2012 / WebClient と HttpClient
日時: 2013/04/21 02:52
名前: lightbox



両方とも コンソールアプリケーションは WebClient 
using System;
//using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.Net;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			var wc = new WebClient();
			wc.Encoding = System.Text.Encoding.GetEncoding("UTF-8");
			string web_text = wc.DownloadString("http://textt.net/sworc/20121226075830.txt");
			wc.Dispose();

			Console.WriteLine(web_text);
			Console.ReadLine();

		}
	}
}
通常 Windows アプリケーション で HttpClient
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinApp1
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private async void button1_Click(object sender, EventArgs e)
		{
			var hc = new HttpClient();
			hc.MaxResponseContentBufferSize = 256000;

			try
			{
				HttpResponseMessage response = await hc.GetAsync("http://winofsql.jp");
				response.EnsureSuccessStatusCode();

//				var responseBodyAsText = await response.Content.ReadAsStringAsync();
				var data = await response.Content.ReadAsByteArrayAsync();
				var web_text = Encoding.GetEncoding("SHIFT_JIS").GetString(data);
				Debug.WriteLine(web_text);
			}
			catch (HttpRequestException hre)
			{
				Debug.WriteLine(hre.ToString());
			}
			catch (Exception ex)
			{
				Debug.WriteLine(ex.ToString());
			}

			hc.Dispose();
		}
	}
}
1) デフォルトでは、UTF-8 で動作するようです。
2) WebClient のように Encoding 指定(プロパティ)が無く、自分で変換する必要があるようです


Async という文字列を含んだメソッドは、非同期専用メソッドで、
そのメソッドを実行するメソッドの宣言に async キーワードが必要です。

また、Async という文字列を含んだメソッドを呼び出すのら await キーワードが必要です
これらの記述方法により、イベント記述が無くなって、書いたままの順序で実行されます。

メンテナンス


日時: 2013/04/21 02:52
名前: lightbox