|
分類:[.NET 全般]
分類:[C#]
初めてご質問させて頂きます。
以下のソースでソケット通信を使用して、
Webサイトのデータ取得を行っているのですが、
@HTTPSでサイトにアクセスする方法
AアクセスしたページにID、パスワードを送信してログインする方法
の二点が分からずに困っています。
解決方法を、どうかご教授頂けないでしょうか。
よろしくお願い致します。
-------------------------------------------------------------
string resMsg = "";//Webページのリクエスト結果格納変数
//GETリクエストを送信するサーバー名とパス
string server = "サイトのURL";
string path = サイトのURL";
try
{
//リクエストメッセージを作成する
string reqMsg = "GET " + path + " HTTPS/1.1\r\n" +
"Host: " + server + "\r\n" +
"Connection: Close\r\n\r\n";
//文字列をbyte配列に変換
System.Text.Encoding enc =
System.Text.Encoding.GetEncoding("Shift_JIS");
byte[] reqBytes = enc.GetBytes(reqMsg);
//ホスト名からIPアドレスを取得
System.Net.IPAddress hostadd =
System.Net.Dns.Resolve(server).AddressList[0];
//IPEndPointを取得
System.Net.IPEndPoint ephost =
new System.Net.IPEndPoint(hostadd, 80);
//Socketの作成
System.Net.Sockets.Socket sock =
new System.Net.Sockets.Socket(
System.Net.Sockets.AddressFamily.InterNetwork,
System.Net.Sockets.SocketType.Stream,
System.Net.Sockets.ProtocolType.Tcp);
//接続
sock.Connect(ephost);
//リクエストメッセージを送信
sock.Send(reqBytes, reqBytes.Length,
System.Net.Sockets.SocketFlags.None);
//受信する
byte[] resBytes = new byte[1024];
System.IO.MemoryStream mem = new System.IO.MemoryStream();
while (true)
{
int resSize =
sock.Receive(resBytes, resBytes.Length,
System.Net.Sockets.SocketFlags.None);
if (resSize == 0)
break;
mem.Write(resBytes, 0, resSize);
}
resMsg = enc.GetString(mem.GetBuffer(), 0, (int)mem.Length);
mem.Close();
//閉じる
sock.Shutdown(System.Net.Sockets.SocketShutdown.Both);
sock.Close();
}
catch (Exception ex) { }
if (resMsg != "")
{
[接続後の処理]
}
-------------------------------------------------------------
|