Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > настройка IWebProxy


Автор: Mitrich212 26.6.2009, 10:57
написал небольшой код, загружающий XML из сети. 
Гуру, пожалуйста, просветите!
Надо чтобы работала по-умолчанию с прокси и без и спрашивала пользовательские настройки(пароль порт и проч..) в крайнем случае 
В чем отличие DefaultProxy от SystemProxy и кого из них достаточно, чтобы при отсутствии proxy в сети программа работала. Можно ли один их них использовать и при NoProxy?

2. request.Credentials = CredentialCache.DefaultCredentials - это авторизация к запрашиваемому серверу? (имя/пароль) как их вводить один раз при работе программы? Что такое дефолтные значения. 


Код


    Private Enum eUseProxy
        NoProxy = 0
        DefaultProxy = 1
        SystemProxy = 2
        UseProxy = 3
    End Enum

  Private Function URl2XML(ByVal URL As String, ByVal UseProxy As eUseProxy, ByVal PS As ProxySettings) As XmlDocument
        Dim Doc As XmlDocument = New XmlDocument


        Dim request As HttpWebRequest = WebRequest.Create(URL) '("http://10.1.4.12/Test/XML/DemoMap.xml")

        Dim pWebProxy As IWebProxy = Nothing
        Select Case UseProxy
            Case eUseProxy.DefaultProxy
                pWebProxy = WebRequest.DefaultWebProxy
                pWebProxy.Credentials = CredentialCache.DefaultCredentials
            Case eUseProxy.SystemProxy
                pWebProxy = WebRequest.GetSystemWebProxy
                pWebProxy.Credentials = CredentialCache.DefaultCredentials
            Case eUseProxy.UseProxy
                pWebProxy = New WebProxy(PS.Host, PS.Port)
                pWebProxy.Credentials = New NetworkCredential(PS.User, PS.Pass, PS.Domain)
        End Select

' может статус NoProxy вообще можно не использовать? А заменить его на Дефолт или Систем? В этом вопрос.
        If UseProxy <> eUseProxy.NoProxy Then
            request.Proxy = pWebProxy
        End If

        request.Credentials = CredentialCache.DefaultCredentials


        ' Get the response.
        Dim response As HttpWebResponse
        Try
            response = CType(request.GetResponse(), HttpWebResponse)
        Catch ex As Exception
            MsgBox("Не удается обновить список" _
                   & vbNewLine & "Ошибка:" & vbNewLine & ex.Message)
            Return Nothing
        End Try


        If response.StatusCode = HttpStatusCode.OK Then
            ' Get the stream containing content returned by the server.
            Try
                Dim pStream As Stream = response.GetResponseStream()
                Doc.Load(pStream)
                pStream.Close()

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try


        Else
            MsgBox("не удается обновить список" _
                   & vbNewLine & "Запрос по адресу " & URL _
                   & vbNewLine & "возвратил статус: " & response.StatusDescription)
        End If
        response.Close()

        Return Doc


    End Function

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)