You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Drive链接仅下载JSON数据而非HTML(VB.NET场景)

解决VB.NET中Google Drive链接下载JSON返回HTML的问题

这个问题我之前碰到过好几次,核心原因是你用的Google Drive共享链接默认是网页预览地址,请求后返回的是带预览界面的HTML,而不是原始的JSON文件。要直接拿到JSON内容,得先把链接转换成Google Drive的直接下载格式,再用VB.NET代码请求。

第一步:转换Google Drive链接格式

先从你的共享链接里提取文件ID:

  • 比如你的原始链接是:https://drive.google.com/file/d/123abcXYZ/view?usp=sharing
  • 其中123abcXYZ就是文件ID

把链接改成直接下载格式:

https://drive.google.com/uc?id=你的文件ID&export=download

注意:这个方法只适用于公开共享的文件,如果是私有文件,还需要额外处理OAuth授权(后面会提)。

第二步:VB.NET代码实现

用HttpClient请求修改后的链接,获取JSON字符串后直接反序列化。这里提供两种序列化库的示例(系统自带的System.Text.Json和常用的Newtonsoft.Json):

示例1:使用System.Text.Json

Imports System.Net.Http
Imports System.Text.Json

' 先定义你的JSON对应的模型类
Public Class YourJsonModel
    ' 按你的JSON结构添加属性,比如:
    Public Property Id As Integer
    Public Property Name As String
    ' ...其他属性
End Class

Public Async Function FetchAndDeserializeJson() As Task(Of YourJsonModel)
    Dim fileId As String = "替换成你的文件ID"
    Dim directDownloadUrl As String = $"https://drive.google.com/uc?id={fileId}&export=download"

    Using httpClient As New HttpClient()
        ' 添加User-Agent头,避免Google返回验证页面
        httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

        ' 获取JSON字符串
        Dim rawJson As String = Await httpClient.GetStringAsync(directDownloadUrl)

        ' 反序列化成模型类
        Return JsonSerializer.Deserialize(Of YourJsonModel)(rawJson)
    End Using
End Function

示例2:使用Newtonsoft.Json(Newtonsoft.Json需要通过NuGet安装)

Imports System.Net.Http
Imports Newtonsoft.Json

Public Class YourJsonModel
    Public Property Id As Integer
    Public Property Name As String
    ' ...其他属性
End Class

Public Async Function FetchAndDeserializeJson() As Task(Of YourJsonModel)
    Dim fileId As String = "替换成你的文件ID"
    Dim directDownloadUrl As String = $"https://drive.google.com/uc?id={fileId}&export=download"

    Using httpClient As New HttpClient()
        httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

        Dim rawJson As String = Await httpClient.GetStringAsync(directDownloadUrl)
        Return JsonConvert.DeserializeObject(Of YourJsonModel)(rawJson)
    End Using
End Function

可能遇到的额外问题

  • 文件非公开共享:如果JSON文件是私有文件,直接用上面的链接会返回权限错误。这时候需要使用Google Drive API,通过OAuth 2.0授权后获取文件内容,需要引入Google的.NET客户端库(Google.Apis.Drive.v3)。
  • 大文件返回验证页面:如果文件较大,Google可能会返回一个带"下载"按钮的HTML页面。这时候需要检查返回内容,如果是HTML,提取页面中的真实下载链接,或者通过Cookie绕过验证(这种情况相对少见,添加User-Agent头基本能解决)。

内容的提问来源于stack exchange,提问作者PyDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:31:28