下载永久素材
下载永久素材的接口说明:
https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Getting_Permanent_Assets.html
图文素材和视频素材返回的是JSON数据,其它类型的素材返回的是文件。
返回JSON数据很好处理,但是返回文件处理起来稍显麻烦,因为有两种可能:
1、获取成功,返回文件。
2、获取失败,返回错误信息。
但是HttpClient的GetFile会直接将返回内容保存为文件,不管是返回的内容是文件还是错误信息。
我们可以通过判断HttpClient的ResponseContentType属性,如果其值为"text/plain",说明返回的不是文件,而是
错误信息。
例如下载指定ID的图片素材到本地,可以参考代码:
Dim
url As
String =
"https://api.weixin.qq.com/cgi-bin/material/get_material?access_token={0}"
Dim
hc As
New HttpClient(CExp(url,
Functions.Execute("GetAccessToken")))
Dim
sucess As
Boolean = True
'用于标记是否下载成功
Dim
fl As
String = "c:\data\abc.jpg"
'要保存为的本地文件
Dim
jo As
New JObject
jo("media_id")
= "eHDdfBQmRtOJ-PtkD6WENicqBE7-tFFczZ6p5ZUnz0k"
'要获取的图片素材ID
hc.Content
= jo.ToString()
If
hc.GetFile(fl)
Then
If hc.ResponseContentType.StartsWith("text/plain") Then
jo =
JObject.Parse(Filesys.ReadAllText(fl))
MessageBox.Show(jo.ToSTring)
'显示错误
FileSys.DeleteFile(fl)
'删除文件
sucess = False
End If
Else
sucess = False
End
If
If
sucess Then
MessageBox.Show("图片素材下载成功!")
Else
MessageBox.Show("图片素材下载失败!")
End If
下载永久视频素材
前面提到,通过接口获取的永久视频素材不是文件,而是一段JSON数据:
{
"title":TITLE,
"description":DESCRIPTION,
"down_url":DOWN_URL,
}
我们需要根据这段JSON数据提供的链接下载视频素材,参考代码:
Dim
url As
String =
"https://api.weixin.qq.com/cgi-bin/material/get_material?access_token={0}"
Dim
hc As
New HttpClient(CExp(url,
Functions.Execute("GetAccessToken")))
Dim
fl As
String =
"c:\data\abc.mp4" '要保存为的本地文件
Dim
jo As
New
JObject
jo("media_id")
= "eHDdfBQmRtOJ-PtkD6WENmQFOu5VJhsunxEZ2BxkfJU"
'要获取的视频素材ID
hc.Content
= jo.ToString()
jo =
JObject.Parse(hc.GetData)
If
jo("down_url")
IsNot Nothing
Then
hc = New
HttpClient(jo("down_url"))
If hc.GetFile(fl)
Then
MessageBox.Show("视频素材下载成功!")
Else
MessageBox.Show("视频素材下载失败!")
End
If
Else
MessageBox.Show(jo.ToString)
End
If