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

VB.NET调用API无数据返回问题排查求助

问题分析与解决建议

核心问题定位

你的代码存在三个关键错误,导致API无法正确解析请求:

  • Dictionary转字符串方式错误:直接调用Dictionary.ToString()得到的是类型标识(如System.Collections.Generic.Dictionary),而非符合application/x-www-form-urlencoded格式的键值对字符串,请求体完全不符合API要求。
  • 表单参数传递方式错误:RestSharp中AddBody默认用于JSON格式请求体,而你设置的Content-Type是表单格式,应该用专门的表单参数添加方法。
  • 手动拼接JSON易出错:手动转义引号生成JSON字符串,容易出现语法错误(比如引号不匹配、格式不规范)。

修正后的代码

' 先安装Newtonsoft.Json NuGet包,用于规范序列化JSON
Imports Newtonsoft.Json

' 定义数据类,让JSON序列化更清晰(可选,但推荐)
Public Class CustomerItem
    Public Property CustomerApplicationId As String = ""
    Public Property CustAccount As String
End Class

Public Class RequestPayload
    Public Property Data As List(Of CustomerItem)
End Class

' 构建规范的JSON数据
Dim customerItem As New CustomerItem With {.CustAccount = AXID}
Dim payload As New RequestPayload With {.Data = New List(Of CustomerItem) From {customerItem}}
Dim jsonData As String = JsonConvert.SerializeObject(payload)

' 初始化请求客户端与请求对象
Dim client = New RestClient("http://***/Sales/Sales/***")
Dim request = New RestRequest(Method.Post)
request.AddHeader("Content-Type", "application/x-www-form-urlencoded")

' 用AddParameter添加表单参数,完全符合API要求的格式
request.AddParameter("data", jsonData)
request.AddParameter("token", "nMwHCdugwVsyqvHhPYhZHmEEWQWiQCfxVETAV")
request.AddParameter("company", "companyname")

' 执行请求并获取响应
Dim responsew = client.Execute(request).Content.ToString

额外排查建议

  • 开启请求日志:添加日志查看实际发送的请求内容,确认参数是否正确传递:
    ' 输出请求日志到控制台(调试用)
    client.Log = New ConsoleLog()
    
  • 检查错误详情:不要只取响应内容,查看响应状态码和错误信息:
    Dim response = client.Execute(request)
    Console.WriteLine($"状态码:{response.StatusCode}")
    Console.WriteLine($"错误信息:{response.ErrorMessage}")
    
  • 核对API文档:确认data字段的JSON结构(如字段大小写、数组嵌套要求)是否完全匹配API规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:26:38