Gewusst wie: Senden einer HTTP-Anforderung mit Proxy

Aktualisiert: November 2007

.NET Compact Framework unterstützt Webdienste. In diesem Beispiel wird eine HTTP-GET-Anforderung mit oder ohne einen angegebenen Proxy gesendet.

Beispiel

Im folgenden Codebeispiel werden mit einem Klick auf eine Schaltfläche die Anforderung gesendet und die Antwort verarbeitet. Die Anforderung verwendet nur dann einen Proxy, wenn ein Proxy angegeben ist. Ausnahmen werden mit der WebException-Klasse behandelt. Die Anforderung verwendet einen StreamReader, um die HTML-Antwort in einen Zeichenarraypuffer zu lesen.

Private ReceiveStream As System.IO.Stream
Private sr As System.IO.StreamReader

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    ' Get URL and proxy
    ' from the text boxes.
    Dim url As String = txtURL.Text
    Dim proxy As String = txtProxy.Text

    Try
        If Not "".Equals(txtProxy.Text) Then
            Dim proxyObject As New WebProxy(proxy, 80)

            ' Disable proxy use when the host is local.
            proxyObject.BypassProxyOnLocal = True

            ' HTTP requests use this proxy information.
            GlobalProxySelection.Select = proxyObject
        End If

        Dim req As WebRequest = WebRequest.Create(url)
        Dim result As WebResponse = req.GetResponse()
        ReceiveStream = result.GetResponseStream()
        Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
        sr = New StreamReader(ReceiveStream, encode)

        ' Read the stream into arrays of 30 characters
        ' to add as items in the list box. Repeat until
        ' buffer is read.
        Dim read(29) As [Char]
        Dim count As Integer = sr.Read(read, 0, 30)
        While count > 0
            Dim str As New String(read, 0, count)
            lstResults.Items.Add(str)
            count = sr.Read(read, 0, 30)
        End While
    Catch ex As WebException
        Dim message As String = ex.Message
        Dim response As HttpWebResponse = CType(ex.Response, HttpWebResponse)
        If Nothing Is response Then
        Else
            message = response.StatusDescription
            response.Close()
        End If
        lstResults.Items.Add(message)
    Catch ex As Exception
        lstResults.Items.Add(ex.Message)
    Finally
        ReceiveStream.Close()
        sr.Close()
    End Try
End Sub
Stream ReceiveStream = null;
StreamReader sr = null;

private void button1_Click(object sender, System.EventArgs e)
{

    // Get URL and proxy
    // from the text boxes.
    string url = txtURL.Text;
    string proxy = txtProxy.Text;

    try 
    {
        if(!"".Equals(txtProxy.Text))
        {
            WebProxy proxyObject = new WebProxy(proxy, 80);

            // Disable proxy use when the host is local.
            proxyObject.BypassProxyOnLocal = true;

            // HTTP requests use this proxy information.
            GlobalProxySelection.Select = proxyObject;

        }

        WebRequest req = WebRequest.Create(url);
        WebResponse result = req.GetResponse();
        ReceiveStream = result.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        sr = new StreamReader( ReceiveStream, encode );

        // Read the stream into arrays of 30 characters
        // to add as items in the list box. Repeat until
        // buffer is read.
        Char[] read = new Char[30];
        int count = sr.Read( read, 0, 30 );
        while (count > 0) 
        {
            String str = new String(read, 0, count);
            lstResults.Items.Add(str);
            count = sr.Read(read, 0, 30);
        }
    } 
    catch(WebException ex)
    {
       string message = ex.Message;
       HttpWebResponse response = (HttpWebResponse)ex.Response;
       if(null != response)
       {
           message = response.StatusDescription;
           response.Close();
       }
       lstResults.Items.Add(message);              
    }
    catch(Exception ex) 
    {
        lstResults.Items.Add(ex.Message);
    }
    finally
    {
        ReceiveStream.Close();
        sr.Close();
    }

}

Kompilieren des Codes

Für dieses Beispiel sind Verweise auf die folgenden Namespaces erforderlich:

Siehe auch

Weitere Ressourcen

Netzwerk und Konnektivität in .NET Compact Framework