再谈头部信息

我们已经知道,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


本页地址:http://www.foxtable.com/mobilehelp/topics/3279.htm