构造访问请求

本示例可参考示例文件"CaseStudy\WebViewer\构造访问请求.Table"。

如果你看过个Foxtable的《高级开发指南》,应该熟悉HttpClient这个类。

WebViewer不管是通过Navigate和NavigateToString方法,还是通过Source属性访问网页,都无法像HttpClient这样自定义请求头和请求体。

Webviewer也可以自定义请求头和请求体,因为访问得到的内容 会在WebViewer中渲染(HttpClient做不到),这样我们就可以利用内置的DOM快速解析和获取数据,这在开发一些互联网数据获取程序(例如爬虫)时,会比HttpClient更方便。

CreateWebResourceRequest方法用于构造请求体,其语法为:

CreateWebResourceRequest(uri, method, postData)

参数说明:

uri 请求地址
method 请求方法,可选参数,默认为"GET",支持所有HTTP方法,如GET、POST、PUT、DELETE、HEAD等,注意必须大写
postData 请求体流,可选参数,使用"GET"方法时传入Nothing即可,使用"POST"时传入字节流


构造请求体之后,可以通过Headers集合设置请求头,然后将请求体传递给NavigateWithWebResourceRequest方法进行访问即可。例如:

构造GET请求

Dim wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
'1
、构造请求体
Dim
request = wv.CreateWebResourceRequest("https://free.mockerapi.com/headers")
'2
、设置请求头
request.Headers.SetHeader(
"Authorization", "Foxtable")
request.Headers.SetHeader(
"User-Agent", "WebViewer")
request.Headers.SetHeader(
"Custom-Param", "Foxtable 2008")
'3
、访问
wv.NavigateWithWebResourceRequest(request)

构造POST请求

Dim wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
'1.
构造表单数据
Dim
formData As String = "username=test&password=123456&remember=1"
Dim
dataBytes As Byte() = Encoding.UTF8.GetBytes(formData) '将表单数据转成字节数组
Dim
postStream As New MemoryStream(dataBytes) '将字节数组转成字节流
'2.
构造POST请求体
Dim
request = wv.CreateWebResourceRequest( "https://free.mockerapi.com/post", "POST", postStream)
'3.
设置表单访问的请求头,这是必须的
request.Headers.SetHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
'4.
访问
wv.NavigateWithWebResourceRequest(request)

构造JSON请求

Dim wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
'1.
构造JSON数据流
Dim
json As String = "{""userName"":""test"",""age"":20,""status"":1}" 'JSON字符串
Dim
jsonBytes As Byte() = Encoding.UTF8.GetBytes(json) '将JSON字符串转成字节数组
Dim
jsonStream As New MemoryStream(jsonBytes) '将字节数组转成字节流
' 2.
创建请求体
Dim
request = wv.CreateWebResourceRequest( "https://free.mockerapi.com/post", "POST", jsonStream)
'3.JSON
一般用设置Content-Type
request.Headers.SetHeader(
"Content-Type", "application/json; charset=utf-8")
'4.
通常还需要一些授权设置
request.Headers.SetHeader(
"Authorization", "Bearer 你的Token")
'5.
访问
wv.NavigateWithWebResourceRequest(request)


本页地址:http://www.foxtable.com/webhelp/topics/7008.htm