VB.NET语言 HTTP 请求 WebRequest/WebResponse ?

VB.NETamuwap 发布于 3 天前 1 次阅读


VB.NET中使用WebRequest和WebResponse进行HTTP请求

在VB.NET中,进行HTTP请求是一个常见的任务,无论是用于获取网页内容、发送数据到服务器,还是进行API调用。VB.NET提供了`System.Net`命名空间中的`WebRequest`和`WebResponse`类来简化这一过程。本文将详细介绍如何在VB.NET中使用这些类进行HTTP请求,并包含一些示例代码。

简介

`WebRequest`类代表对HTTP服务器的请求。它是一个抽象类,不能直接实例化。`WebRequest`类提供了多种方法来创建不同类型的请求,如GET、POST、HEAD等。

`WebResponse`类代表对`WebRequest`的响应。它同样是一个抽象类,不能直接实例化。`WebResponse`类提供了访问响应内容的方法,如获取响应状态码、读取响应正文等。

创建请求

要创建一个HTTP请求,首先需要创建一个`WebRequest`对象。以下是如何创建一个GET请求的示例:

vb.net
Imports System.Net

Module Module1
Sub Main()
' 创建一个WebRequest对象
Dim webRequest As WebRequest = WebRequest.Create("http://www.example.com")

' 发送请求并获取响应
Dim webResponse As WebResponse = webRequest.GetResponse()

' 读取响应内容
Dim reader As New StreamReader(webResponse.GetResponseStream())
Dim response As String = reader.ReadToEnd()

' 输出响应内容
Console.WriteLine(response)

' 关闭响应流
reader.Close()
webResponse.Close()
End Sub
End Module

在上面的代码中,我们首先使用`WebRequest.Create`方法创建了一个指向`http://www.example.com`的请求。然后,我们调用`GetResponse`方法来发送请求并获取响应。接下来,我们使用`StreamReader`来读取响应内容,并将其输出到控制台。

发送POST请求

发送POST请求与发送GET请求类似,但需要使用`WebRequest.Create`方法创建一个`HttpWebRequest`对象,并设置其`Method`属性为"POST"。以下是一个发送POST请求的示例:

vb.net
Imports System.Net
Imports System.IO

Module Module1
Sub Main()
' 创建一个WebRequest对象
Dim webRequest As HttpWebRequest = DirectCast(WebRequest.Create("http://www.example.com"), HttpWebRequest)

' 设置请求方法为POST
webRequest.Method = "POST"

' 创建POST数据
Dim postData As String = "param1=value1&param2=value2"

' 设置请求内容
Dim dataBytes As Byte() = Encoding.UTF8.GetBytes(postData)
webRequest.ContentType = "application/x-www-form-urlencoded"
webRequest.ContentLength = dataBytes.Length

' 发送POST数据
Using stream As Stream = webRequest.GetRequestStream()
stream.Write(dataBytes, 0, dataBytes.Length)
End Using

' 获取响应
Dim webResponse As WebResponse = webRequest.GetResponse()

' 读取响应内容
Dim reader As New StreamReader(webResponse.GetResponseStream())
Dim response As String = reader.ReadToEnd()

' 输出响应内容
Console.WriteLine(response)

' 关闭响应流
reader.Close()
webResponse.Close()
End Sub
End Module

在这个示例中,我们首先创建了一个`HttpWebRequest`对象,并将其`Method`属性设置为"POST"。然后,我们创建了一些POST数据,并将其写入请求流。我们发送请求并获取响应。

处理响应

一旦发送了请求,就可以通过`WebResponse`对象来处理响应。以下是一些常用的响应处理方法:

- `GetResponseStream`:获取响应的输入流。
- `GetResponseHeaders`:获取响应的HTTP头信息。
- `GetStatusDescription`:获取响应的状态描述。
- `GetResponseUri`:获取响应的URL。

以下是如何读取响应内容的示例:

vb.net
Imports System.Net
Imports System.IO

Module Module1
Sub Main()
' 创建一个WebRequest对象
Dim webRequest As WebRequest = WebRequest.Create("http://www.example.com")

' 发送请求并获取响应
Dim webResponse As WebResponse = webRequest.GetResponse()

' 读取响应内容
Dim reader As New StreamReader(webResponse.GetResponseStream())
Dim response As String = reader.ReadToEnd()

' 输出响应内容
Console.WriteLine(response)

' 关闭响应流
reader.Close()
webResponse.Close()
End Sub
End Module

在这个示例中,我们使用`StreamReader`来读取响应流中的内容,并将其输出到控制台。

异常处理

在进行HTTP请求时,可能会遇到各种异常,如`WebException`、`IOException`等。在编写代码时,应该使用`Try...Catch`块来处理这些异常。

以下是如何处理异常的示例:

vb.net
Imports System.Net
Imports System.IO

Module Module1
Sub Main()
Try
' 创建一个WebRequest对象
Dim webRequest As WebRequest = WebRequest.Create("http://www.example.com")

' 发送请求并获取响应
Dim webResponse As WebResponse = webRequest.GetResponse()

' 读取响应内容
Dim reader As New StreamReader(webResponse.GetResponseStream())
Dim response As String = reader.ReadToEnd()

' 输出响应内容
Console.WriteLine(response)

' 关闭响应流
reader.Close()
webResponse.Close()
Catch ex As WebException
Console.WriteLine("WebException: " & ex.Message)
Catch ex As IOException
Console.WriteLine("IOException: " & ex.Message)
Catch ex As Exception
Console.WriteLine("Exception: " & ex.Message)
End Try
End Sub
End Module

在这个示例中,我们使用`Try...Catch`块来捕获并处理可能发生的异常。

总结

在VB.NET中,使用`WebRequest`和`WebResponse`类进行HTTP请求是一个相对简单的过程。通过理解这些类的基本用法,你可以轻松地发送GET和POST请求,并处理响应。本文提供了一些基本的示例代码,可以帮助你开始使用这些类。随着你对VB.NET和HTTP协议的深入了解,你可以进一步探索更高级的功能,如HTTPS、认证、cookies等。