The .NET Compact Framework supports Web services. This example submits an HTTP GET request with or without a specified proxy.
Example
In the following code example, a button click submits the request and processes the response. The request uses a proxy only if it is specified and uses the WebException class to handle any exceptions. It uses a StreamReader to read the HTML response into a character array buffer.
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()
        Dim ReceiveStream As Stream = result.GetResponseStream()
        Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
        Dim sr As 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)
    End Try
End Sub
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();
        Stream ReceiveStream = result.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader 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);
    }
}
Compiling the Code
This example requires references to the following namespaces: