使用代理调用http get

时间:2013-11-17 13:56:34

标签: vb.net proxy

如何编辑代码以接受代理?

CallHttp函数

Public Shared Function CallHttp(ByVal url As String, _
                                ByVal params As String, _
                                ByVal httpPost As Boolean) As String
    If httpPost Then
        Return CallHttpPost(url, params)
    Else
        Return CallHttpGet(url, params)
    End If
End Function

CallHttpPost函数:

Protected Shared Function CallHttpPost(ByVal url As String, _
                                       ByVal params As String) As String
    Dim loHttp As HttpWebRequest
    'params = QueryStringEncode(params, TypeEncodeEnum.urlEncode)
    loHttp = CType(WebRequest.Create(url), HttpWebRequest)
    loHttp.Method = "POST"
    Dim requestWriter As StreamWriter = New StreamWriter(loHttp.GetRequestStream())

    If Not String.IsNullOrEmpty(params) Then
        requestWriter.Write(params)
    End If
    requestWriter.Close()
    loHttp.ContentType = "application/x-www-form-urlencoded"
    loHttp.Headers.Set("Pragma", "no-cache")
    loHttp.AllowAutoRedirect = True
    loHttp.KeepAlive = True
    loHttp.Timeout = 30 * 1000
    'loHttp.Referer = url

    Dim loWebResponse As HttpWebResponse = CType(loHttp.GetResponse(), HttpWebResponse)
    Dim enc As Encoding = System.Text.Encoding.UTF8
    Dim loResponseStream As StreamReader = New StreamReader(loWebResponse.GetResponseStream(), enc)
    Dim lcHtml As String = loResponseStream.ReadToEnd()

    loWebResponse.Close()
    loResponseStream.Close()

    Return lcHtml
End Function

我在企业防火墙后面,如果我使用像这样的功能

,我会收到407 proxy authentication required错误
 strXML = CallHttp(API_URL, sb.ToString, False)

任何想法?

1 个答案:

答案 0 :(得分:0)

userpass是您的代理的身份验证

Dim myProxy As New WebProxy("192.168.1.2:8080")
Dim authentication As New System.Net.NetworkCredential("user", "pwd") 
myProxy.Credentials = authentication 
Dim loHttp As HttpWebRequest
loHttp .Proxy = myProxy