【发布时间】:2022-11-24 19:37:01
【问题描述】:
我正在使用某人的 API 来获取数据。
Api 接受一个参数和一些标头。
现在在 Postman 中我创建了一个 GET 链接并且它完美地触发了。
在 VB.NET 中,我尝试了以下代码,但我收到错误 json 响应,通知该参数丢失。
以下是我的 VB.NET 代码
Public Function MIGetGSTin(ByVal URL As String, ByVal accesstoken As String, ByVal clientID As String)
Dim Requester As HttpWebRequest = HttpWebRequest.Create(URL)
Requester.Method = "GET"
Requester.Timeout = -1
Requester.ContentType = "application/json"
'Requester.Headers.Add("Authorization", "Bearer " & accesstoken)
'Requester.Headers.Add("client-id", clientID)
Requester.Headers("Authorization") = "Bearer " & accesstoken
Requester.Headers("client-id") = clientID
Dim ResponseStreamReader As New StreamReader(Requester.GetResponse().GetResponseStream())
Return ResponseStreamReader.ReadToEnd()
End Function
我也试过在 vb.net 代码执行期间我获取数据,复制它并粘贴到邮递员中,它在那里工作。
作为参考,我发布了一张手册图片以运行 API 提供商提供的 url。
笔记 :下图仅供参考。其中的所有凭证数据都已更改。
同时发布我的邮递员设置
注意:邮递员回复有效。这个邮递员设置正在工作。邮递员仅供参考
我不知道我哪里错了。
请注意是否需要任何东西。
谢谢你
更新:根据@Jimi 在 cmets 中所说的也尝试过但没有用。以下是下面的新代码
Public Function MIGetGSTin(ByVal URL As String, ByVal accesstoken As String, ByVal clientID As String)
Dim Requester As HttpWebRequest = WebRequest.CreateHttp(URL)
Requester.Method = "GET"
Requester.Timeout = -1
Requester.ContentType = "application/json"
Requester.Headers.Add(HttpRequestHeader.Authorization, $"Bearer {accesstoken}")
Requester.Headers.Add("client-id", clientID)
Requester.Headers.Add(HttpRequestHeader.CacheControl, "no-cache")
'Requester.Headers.Add("Authorization", "Bearer " & accesstoken)
'Requester.Headers("Authorization") = "Bearer " & accesstoken
'Requester.Headers("client-id") = clientID
Using ResponseStreamReader As New StreamReader(Requester.GetResponse().GetResponseStream())
Return ResponseStreamReader.ReadToEnd()
End Using
'Dim ResponseStreamReader As New StreamReader(Requester.GetResponse().GetResponseStream())
End Function
【问题讨论】:
-
URL 是否包含
?gstin=[some value]查询元组?正确的形式是[HttpWebRequest].Headers.Add(HttpRequestHeader.Authorization, $"Bearer {accesstoken}"),其他header也一样。添加Requester.Headers.Add(HttpRequestHeader.CacheControl, "no-cache")同时更改Dim Requester = WebRequest.CreateHttp(URL)中的WebRequest初始化 -
您应该避免这种连接形式:
Dim ResponseStreamReader As New StreamReader(Requester.GetResponse().GetResponseStream()):HttpWebResponse 和 Stream 都必须使用Using语句声明 -
好的,我试着让你知道。
-
@Jimi No
?gstin=[some value]是单值而不是元组或多个值的组合。 (在互联网上搜索查询元组。如果我错了请纠正我。)例如。?gstin=24AAHDDA1231J就是这样。 -
@Jimi 不工作我仍然收到此错误
{"error":true,"message":"paramter missing"}。我按照你说的写了代码。也再次更新问题。请检查一下。