下载永久素材

下载永久素材的接口说明:

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


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