VB.NET调用REST API获取Token失败求助(Visual Studio 2015)
问题分析与解决方案
核心问题
你的VB.NET代码中请求体构造方式错误,导致与Postman发送的请求格式不匹配;同时StatusCode=0通常表示请求未成功发送,可能伴随证书验证问题或网络拦截。
代码修正
1. 正确构造JSON请求体
Postman中你应该是发送JSON格式请求体,但原代码用AddParameter添加参数会默认以表单形式发送,而非JSON。修正代码如下:
首先定义登录请求的实体类(或直接用匿名类):
Public Class LoginRequest Public Property Username As String Public Property Password As String End Class
然后修改请求发送代码:
Dim client = New RestClient("https://xxxxxxxx.com/IntegrationAPI_2/api/login") ' 解决HTTPS证书验证问题(如果服务器证书不被本地信任) client.RemoteCertificateValidationCallback = Function(sender, cert, chain, sslPolicyErrors) True Dim request2 = New RestRequest(Method.POST) request2.RequestFormat = DataFormat.Json ' 构造JSON请求体 Dim loginPayload = New LoginRequest With { .Username = UserVar, .Password = PasswVar } ' 将JSON对象添加到请求体(旧版RestSharp用AddBody,若用新版可替换为AddJsonBody) request2.AddBody(loginPayload) Dim response2 As RestResponse = client.Execute(request2) ' 输出调试信息排查问题 Console.WriteLine("状态码: " & response2.StatusCode) Console.WriteLine("响应内容: " & response2.Content) Console.WriteLine("错误信息: " & response2.ErrorMessage)
额外排查步骤
- 对比请求头:确保VB.NET发送的
Content-Type为application/json,设置RequestFormat = DataFormat.Json后RestSharp会自动添加该头。 - 检查网络环境:确认应用没有被代理、防火墙拦截,可尝试在同一网络下测试。
- 查看错误详情:重点看
response2.ErrorMessage和response2.ErrorException,这能直接定位请求失败的原因(比如证书错误、参数为空等)。 - 验证参数值:确认
UserVar和PasswVar没有空值或格式错误,和Postman中使用的参数完全一致。 - RestSharp版本适配:Visual Studio 2015建议使用RestSharp 106.x版本(兼容.NET Framework 4.x),新版本可能不支持旧框架。
内容的提问来源于stack exchange,提问作者Fernando Diaz
相关产品推荐
相关产品推荐

