再谈头部信息
我们已经知道,Http服务器和客户端之间可以通过Post、Get、Cookies传递信息,其中Post和Get都是单向的,Cookies是双向的。
前面两节,我们用了一个新的数据传递方法:通过头部(Headers)传递信息。
Headers一样可以双向传递,不同的是Cookies可以存储在客户端供下次访问使用,而Headers只能是临时的。
此外Headers不支持中文,如果需要用中文,可用UrlEncode和UrlDecode函数进行编码和解码。
你可能已经知道,服务端和客户端之间默认已经有不少头部信息,例如传递客户端的浏览器类型、服务器类型、HTTP协议版本等等。
服务端的HttpRequest事件有两个和头部信息相关的属性:
客户端类HttpClient有两个和头部信息相关的属性:
在针对一些第三方API接口进行开发时,可能需要使用头部信息,参考:阿里云全国物流查询接口。
示例
服务端的HttpRrquest事件代码
Select
Case e.Path
Case "test.jpg"
'获取客户端发送来的头部信息
Dim
author As
String =
UrlDecode(e.Headers("author"))
Dim age
As String =
e.Headers("age")
'向客户端发送头部信息
e.ResponseHeaders.Add("brief",URLEncode("你不是因为厉害才开始,你是因为开始才厉害"))
e.ResponseHeaders.Add("pages",600)
'发送实际内容
e.WriteFile("d:\web\test.jpg")
End
Select
客户端代码:
Dim
htc As
new HttpClient("http://127.0.0.1/test.jpg")
htc.Headers.Add("author",
UrlEncode("舒淇"))
'向服务端附加头部信息
htc.Headers.Add("age",
30)
If
htc.GetInformation()
Then
'获取服务端返回的头部信息
Dim
brief As
String =
UrlDecode(htc.ResponseHeaders("brief"))
Dim pages
As Integer =
htc.ResponseHeaders("pages")
'获取实际内容
htc.GetFile("c:\data\test.jpg")
MessageBox.Show("文件下载成功",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information)
Else
MessageBox.Show("文件下载失败",
"提示",
MessageBoxButtons.OK,MessageBoxIcon.Error)
End
If