Back to Top

プログラムの覚書

Category: ネットワーク通信

VB.NET HttpWebRequestによるHTTP通信

HttpWebRequestを使用して、HTTP通信をする方法を記載します。

・System.Netをインポートします。

HTTP通信

Dim html As String = ""

Dim cookie As CookieContainer = New CookieContainer()

Dim httpReq As HttpWebRequest = HttpWebRequest.Create("http://microsoft.com")

'クッキーを設定
httpReq.CookieContainer = cookie

'GET通信に設定(GET・POSTを指定)
httpReq.Method = "GET"

'ユーザー名とパスワードを設定
httpReq.Credentials = New NetworkCredential("username", "password")

'サーバー応答を受信するためのHttpWebResponseを取得
Using httpRes As HttpWebResponse = httpReq.GetResponse()

    'HTTPヘッダー表示
    For Each s As String In httpRes.Headers
        Console.WriteLine(s)
    Next

    '応答データを受信するためのStreamを取得
    Using Strm As System.IO.Stream = httpRes.GetResponseStream()
        Using sr As New System.IO.StreamReader(Strm, System.Text.Encoding.UTF8)
            'データをすべて受信
            html = sr.ReadToEnd()
        End Using
    End Using

End Using

'取得したデータを表示する
Console.WriteLine(html)

※Credentials は、ログインとパスワードがいるサイトのみ設定します。

※CookieContainer のクッキーの設定は、クッキーを使用するサイトの時のみで、クッキーを使用しないサイトは必要ないです。

※Method は通常GETがデフォルトなので、POSTの時のみ設定が必要です。
 
 
 

 

VB.NET FtpWebRequestによるFTP通信

FtpWebRequestクラスを使用して、FTPサーバーとの通信(アップロード、ダウンロード、ファイル削除等)の方法を記載します。

・System.Netをインポートします。

FTPサーバーからファイルをダウンロードする

'ダウンロードしたファイルの保存先
Dim fileName As String = "C:\work\sample.txt"

'ダウンロードするファイルのURI
Dim reqUri As New Uri("ftp://192.168.2.141/sample.txt")

Dim ftpReq As FtpWebRequest = FtpWebRequest.Create(reqUri)

'ダウンロードに設定
ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile

'ユーザー名とパスワードを設定
ftpReq.Credentials = New NetworkCredential("username", "password")

'要求の完了後に接続を閉じる
ftpReq.KeepAlive = False

'ASCIIモードで転送する
ftpReq.UseBinary = False

'PASSIVEモードを無効にする
ftpReq.UsePassive = False

'FtpWebResponseを取得する
Using ftpRes As FtpWebResponse = ftpReq.GetResponse()
    'ファイルをダウンロードするためのStreamを取得する
    Using reqStrm As System.IO.Stream = ftpRes.GetResponseStream()

        '書き込むためのFileStreamを作成
        Using fStrm As New FileStream(fileName, FileMode.Create, FileAccess.Write)
            Dim buffer(1023) As Byte
            While True
                Dim bSize As Integer = reqStrm.Read(buffer, 0, buffer.Length)
                If bSize = 0 Then
                    Exit While
                End If
                fStrm.Write(buffer, 0, bSize)
            End While
        End Using

    End Using
End Using

 

FTPサーバーにファイルをアップロードする

'アップロードするファイル
Dim fileName As String = "C:\work\sample.txt"

'アップロード先のURI
Dim reqUri As New Uri("ftp://192.168.2.141/sample.txt")

Dim ftpReq As FtpWebRequest = FtpWebRequest.Create(reqUri)

'アップロードに設定
ftpReq.Method = WebRequestMethods.Ftp.UploadFile

'ユーザー名とパスワードを設定
ftpReq.Credentials = New NetworkCredential("username", "password")

'要求の完了後に接続を閉じる
ftpReq.KeepAlive = False

'ASCIIモードで転送する
ftpReq.UseBinary = False

'PASVモードを無効にする
ftpReq.UsePassive = False

'HTTP Proxy
'ftpReq.Proxy = Nothing
'System.Net.WebRequest.DefaultWebProxy = Nothing

'ファイルをアップロードするためのStreamを取得
Using reqStrm As Stream = ftpReq.GetRequestStream()

    'アップロードするファイルを開く
    Using fStrm As New FileStream(fileName, FileMode.Open, FileAccess.Read)
        'アップロードStreamに書き込む
        Dim buffer(1023) As Byte
        While True
            Dim bSize As Integer = fStrm.Read(buffer, 0, buffer.Length)
            If bSize = 0 Then
                Exit While
            End If
            reqStrm.Write(buffer, 0, bSize)
        End While
    End Using

End Using

 

FTPサーバーの短いファイル一覧を取得する

Dim reqUri As New Uri("ftp://192.168.2.141/")

Dim ftpReq As FtpWebRequest = FtpWebRequest.Create(reqUri)

'短いファイル一覧の取得に設定
ftpReq.Method = WebRequestMethods.Ftp.ListDirectory

'ユーザー名とパスワードを設定
ftpReq.Credentials = New NetworkCredential("username", "password")

Dim strList As String = ""
Using res As FtpWebResponse = ftpReq.GetResponse()
    Using reqStrm As New StreamReader(res.GetResponseStream())
        strList = reqStrm.ReadToEnd()
    End Using
End Using

Console.WriteLine(strList)

 

FTPサーバーのファイルを削除する

Dim reqUri As New Uri("ftp://192.168.2.141/sample.txt")

Dim ftpReq As FtpWebRequest = FtpWebRequest.Create(reqUri)

'ファイルの削除に設定
ftpReq.Method = WebRequestMethods.Ftp.DeleteFile

'ユーザー名とパスワードを設定
ftpReq.Credentials = New NetworkCredential("username", "password")

Using ftpRes As FtpWebResponse = ftpReq.GetResponse()
End Using

 

FtpWebRequest.Method プロパティにより、FTPサーバーへの処理を変更します。