投稿者 あにす  (社会人) 投稿日時 2010/4/26 10:34:57
てすてす、あーてすてす。


Imports System.Runtime.CompilerServices
Imports System.Net
Imports System.Text
Imports System.Web
Imports System.Collections.Specialized

Friend Module WebClientExtension
    ''' <param name="queryString">この内容はURLエンコードされます</param> 
    <Extension()> _
    Public Function HttpGet(ByVal webClient As WebClient, ByVal url As StringByVal queryString As NameValueCollection, ByVal userID As StringByVal userPass As StringAs String
        Dim res As String = ""
        Using client As New WebClient()
            client.Encoding = Encoding.UTF8

            client.Credentials = New NetworkCredential(userID, userPass)

            For i As Integer = 0 To queryString.Keys.Count - 1
                queryString(queryString.Keys(i)) = HttpUtility.UrlEncode(queryString(queryString.Keys(i)))
            Next
            client.QueryString = queryString

            Try
                res = client.DownloadString(url)
            Catch ex As WebException
                Throw New WebException("通信エラー", ex)
            End Try
        End Using

        Return res
    End Function

    ''' <param name="valus">この内容はURLエンコードされます</param> 
    <Extension()> _
    Public Function HttpPost(ByVal webClient As WebClient, ByVal url As StringByVal valus As NameValueCollection, ByVal userID As StringByVal userPass As StringAs String
        Dim url_ As String = url
        If valus.Count >= 1 Then
            url_ += "?"
        End If

        Dim res() As Byte = Nothing
        Using client As New WebClient()
            client.Encoding = Encoding.UTF8

            client.Credentials = New NetworkCredential(userID, userPass)

            For Each key As String In valus.Keys
                url_ += key + "=" + HttpUtility.UrlEncode(valus(key)) + "&"
            Next

            Try
                res = client.UploadData(url_, System.Text.Encoding.Default.GetBytes(""))
            Catch ex As WebException
                 Throw New WebException("通信エラー", ex)
            End Try
        End Using
        Return Encoding.UTF8.GetString(res)
    End Function

End Module