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

VB.Net获取BearerToken代码报错求助:Dynamic类型行出错

问题分析与解决方案

你的代码存在多处问题导致JObject.Parse语句报错,以下是具体问题和修复方案:

核心问题

  1. 重复定义函数:代码里写了两个完全一致的GetBearerToken函数,这会直接触发编译错误,必须删除其中一个。
  2. 未处理响应失败场景:当请求返回非2xx状态码时,response.Content可能是错误页面、纯文本等非JSON内容,此时执行JObject.Parse会抛出解析异常。
  3. Dynamic类型使用限制:VB.Net中使用Dynamic需要将项目的Option Strict设置为Off,否则会编译报错;且Dynamic类型的可靠性远不如强类型访问。
  4. 可能缺少依赖与命名空间:若未通过NuGet安装Newtonsoft.Json包,或未引入Newtonsoft.Json.Linq命名空间,JObject会无法被识别。

修复后的代码

以下是修正后的代码,采用强类型访问方式,同时增加响应有效性校验:

Imports Newtonsoft.Json.Linq ' 需先通过NuGet安装Newtonsoft.Json包,再引入此命名空间
Imports RestSharp ' 确保引入RestSharp命名空间,需先安装RestSharp NuGet包

Private Function GetBearerToken() As String
    Try
        Dim client = New RestClient(Config_class.tokenurl)
        Dim request = New RestRequest(Method.POST)
        request.AddHeader("cache-control", "no-cache")
        request.AddHeader("content-type", "application/x-www-form-urlencoded")
        
        ' 用字符串插值拼接参数,避免符号混用导致的问题
        Dim paramContent = $"grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}"
        request.AddParameter("application/x-www-form-urlencoded", paramContent, ParameterType.RequestBody)
        
        Dim response As IRestResponse = client.Execute(request)
        
        ' 先校验请求是否成功
        If Not response.IsSuccessful Then
            ' 可在此处记录错误信息,比如response.StatusCode、response.ErrorMessage
            Return ""
        End If
        
        ' 用JObject强类型索引访问替代Dynamic
        Dim resp As JObject = JObject.Parse(response.Content)
        ' 检查响应中是否包含access_token字段
        If resp.ContainsKey("access_token") Then
            Return resp("access_token").ToString()
        Else
            Return ""
        End If
    Catch ex As Exception
        ' 建议添加日志记录异常详情,方便排查问题
        ' 例如:Log.Error("获取BearerToken失败", ex)
        Return ""
    End Try
End Function

额外建议

  • 确保已通过NuGet安装RestSharp和Newtonsoft.Json两个依赖包。
  • 捕获异常时记录ex.Message和response.Content,便于定位是请求失败还是JSON格式异常。
  • 优先使用强类型访问(如JObject索引或自定义响应类反序列化),避免Dynamic类型带来的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:50:15