WEBアクセス方法(C#)

WebClientクラス

DownloadFile

using System.Net;
指定のURLデータを取得&保存
new WebClient().DownloadFile(address: @"http://office-yone.com", fileName: @"office-yone.html");

OpenRead

using System.Net;
using System.IO;
指定のURLデータを取得
Stream st = new WebClient().OpenRead("http://office-yone.com");
var sr = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));
string html = sr.ReadToEnd();
sr.Close();
st.Close();
MessageBox.Show(html);

DownloadData

using System.Net;
指定のURLデータを取得
byte[] data = new WebClient().DownloadData("http://office-yone.com");
string html = Encoding.GetEncoding("Shift_JIS").GetString(data);
MessageBox.Show(html);

プロキシ利用

using System.Net;
var client = new WebClient();
プロキシ利用
client.Proxy = WebRequest.DefaultWebProxy;
プロキシ指定
client.Proxy = new WebProxy("http:~:8080");
プロキシ未使用
client.Proxy = null;
client.~

WebRequest・WebResponseクラス

GET

using System.Net;
using System.IO;

リクエスト作成
var req = WebRequest.Create(@"http://office-yone.com");
リクエスト送信&レスポンス取得
var res = req.GetResponse();
↑ 受信データからStreamを取得
Stream resStream = res.GetResponseStream();
読み込み
var reader = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));
string html = reader.ReadToEnd();
reader.Close();
st.Close();

POST

using System.Net;
using System.IO;

WebRequestの作成
var req = WebRequest.Create("http://~;");

POST送信する文字列をバイト型配列に変換
byte[] postDataBytes = Encoding.ASCII.GetBytes("AAA");

メソッドにPOSTを指定
req.Method = "POST";

ContentTypeを"application/x-www-form-urlencoded"に
req.ContentType = "application/x-www-form-urlencoded";

POST送信するデータの長さを指定
req.ContentLength = postDataBytes.Length;
POST送信の為のStreamを取得
Stream reqStream = req.GetRequestStream();

送信するデータ書き込み
reqStream.Write(postDataBytes, 0, postDataBytes.Length);
reqStream.Close();

リクエストメッセージ取得
var res = req.GetResponse();
↑ 受信データからStreamを取得
Stream resStream = res.GetResponseStream();

読み込み
StreamReader sr = new StreamReader(resStream, Encoding.GetEncoding("shift_jis"));
string html = reader.ReadToEnd();
reader.Close();
st.Close();

クッキー送受信

using System.Net;
WebRequestの作成
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http:localhost:51496/Mvc/Do/AAA");
CookieContainerプロパティを設定する
req.CookieContainer = new CookieContainer();
要求元のURIに関連したCookieを追加し、要求に使用する
req.CookieContainer.Add(_cookie.GetCookies(req.RequestUri));
サーバーからの応答を受信するためのWebResponseを取得
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
受信したCookieのコレクションを取得する
CookieCollection cookies = req.CookieContainer.GetCookies(req.RequestUri);
Cookie名と値を列挙する
foreach (Cookie cook in cookies)
 Console.WriteLine("{0}={1}", cook.Name, cook.Value);
 →name=test
 →value=1
取得したCookieを保存
_cookie.Add(cookies);
応答データを受信するためのStreamを取得
Stream st = res.GetResponseStream();
StreamReader reader = new StreamReader(st, Encoding.GetEncoding("shift_jis"));
受信して表示
string html = reader.ReadToEnd();
reader.Close();

namespace MyMVC.Controllers
{
 public class MvcController : Controller
 {
  public string Do(string prm)
  {
  string val = Response.Cookies["name"].Value;
  
  Response.Cookies["name"].Value = HttpUtility.UrlEncode("test");
  Response.Cookies["name"].Expires = DateTime.Now.AddMinutes(60);
  Response.Cookies["value"].Value = "1";
  Response.Cookies["value"].Expires = DateTime.Now.AddMinutes(60);
  
  削除時
  Response.Cookies.Remove("name");
  
  return prm;
 }
 }
}

HttpClient

static void Main(string[] args)
{
 非同期で実行
 string result = myFunc().Result;
}
private static async Task myFunc()
{
 return = await new HttpClient().GetStringAsync(@"http://office-yone.com");
}

コメントを残す

メールアドレスが公開されることはありません。