Como: Enviar uma solicitação HTTP com proxy
O .NET Compact Framework oferece suporte a serviços da Web.Este exemplo envia uma solicitação HTTP GET com ou sem um proxy especificado.
Exemplo
No seguinte exemplo de código, um clique no botão envia a solicitação e processa a resposta.A solicitação usa um proxy somente se ele for especificado e usa o WebException classe para tratar qualquer exceção. Ele usa um StreamReader para ler a resposta HTML em um buffer matriz de caractere.
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();
}
}
Compilando o código
Este exemplo requer referências aos seguintes namespaces: