更新:2007 年 11 月
.NET Compact Framework 支援 Web 服務。此範例會以 (或不使用) 指定的 Proxy 送出 HTTP GET 要求。
範例
在下列程式碼範例中,按一下按鈕會送出要求並處理回應。這個要求只在有指定 Proxy 時才會使用 Proxy,並且會使用 WebException 類別來處理任何例外狀況。該要求會使用 StreamReader,將 HTML 回應讀取到字元陣列緩衝區中。
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();
}
}
編譯程式碼
這個範例需要下列命名空間的參考: