获取内容信息
我们可以获取内容信息,例如最近一次修改时间、内容类型、内容长度、状态码、状态字符串和头部信息等。
例如:
Dim
htc As
new HttpClient("http://www.foxtable.com/bbs/images/foxtable.gif")
htc.GetFile("c:\aaa\test.gif")
OutPut.Show("更新日期:"
& htc.LastModified)
OutPut.Show("状态码:"
& htc.StatusCode)
OutPut.Show("状态描述:"
& htc.StatusDescription)
OutPut.Show("内容类型:"
& htc.ResponseContentType)
OutPut.Show("内容长度:"
& htc.ResponseContentLength)
For
Each key
As String
In htc.ResponseHeaders.Keys
'显示服务器返回的头部信息
OutPut.Show(Key
& ":"
& htc.ResponseHeaders(key))
Next
第三方开发接口示例
下面是进行企业微信开发的时候,一段下载临时素材的代码:
Dim
ul As
String =
"https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}"
Dim
mediaID As
String =
"1GDEyyL7RIo868rKmIf3ThZoCMkd69VvH3wPBMpQj9w3uq7dmdxlbNjh669KPLyhF7EEOpBszls7BSmgMFgn07A"
'要获取素材的ID
Dim
hc As
new HttpClient(CExp(ul,Functions.Execute("GetQYAccessToken"),mediaID))
Dim
fl As
String =
"c:\data\abc.jpg" '要保存为的本地文件
If
hc.GetFile(fl)
Then
If hc.ResponseContentType.StartsWith("application/json")
Then
MessageBox.Show(Filesys.ReadAllText(fl))
FileSys.DeleteFile(fl)
'删除文件
Else
MessageBox.Show("图片素材下载成功!")
End
If
Else
MessageBox.Show("图片素材下载失败!")
End
If
下载临时素材,会有两种可能:
1、获取成功,返回文件。
2、获取失败,返回JSON格式的错误信息。
但是HttpClient的GetFile会直接将返回内容保存为文件,不管是返回的内容是素材文件还是错误信息。
我们可以判断HttpClient的ResponseContentType属性,如果其值为"application/json",说明返回的不是素材文件,而是错误提示信息,然后从此文件读取错误信息显示给用户,最后删除文件。
接下来你会看到,我们还有更好的办法应付此类场景。