在 VB.NET 代码中格式化此 GET 请求?



我正在尝试使用"GET"方法来请求来自 Accelo API 的活动计数:

https://api.accelo.com/docs/?http#count-activities

尽管我使用非常相似的 POST 方法使用身份验证方法成功获取访问令牌,但我一生都无法弄清楚如何获取活动计数。 API 说使用"GET"并将访问令牌作为"持有者..."我也尝试先做一个帖子并获取流,尝试发送一些数据并访问"列表活动"端点......什么都不起作用。我所做的一切都返回错误"400。不好的要求。

我尝试直接在 URI 中以查询字符串格式传递数据,并且尝试不传递任何数据,因为它是一个 GET 函数。在我看来,我完全遵循了 API。

Dim data2 = Nothing ' Encoding.UTF8.GetBytes(jsonstring)
Dim _list = GetListOfActivities(New Uri("https://example.api.accelo.com/api/v0/activities/count.xml"), data2, _AccessToken)
Dim reqa As WebRequest = WebRequest.Create(uri)
' reqa.Method = "GET"
reqa.Headers.Add("GET", "/api/v0/activities/count.xml HTTP/1.1")
reqa.Headers.Add("Authorization", "Bearer " & _AccessToken)
reqa.ContentType = "application/x-www-form-urlencoded"
'reqa.ContentLength = jsonDataBytes.Length
' Dim streama = reqa.GetRequestStream()
' streama.Write(jsonDataBytes, 0, jsonDataBytes.Length)
'streama.Close()
Dim responsea As WebResponse = reqa.GetResponse()
Console.WriteLine((CType(responsea, HttpWebResponse)).StatusDescription)

我一定是格式错误的请求 - 请帮忙吗?

我的问题被证明是愚蠢的,实际上超出了我在这里发布的范围。我在最初的请求中指定了一个"范围"来获取设置为只读"员工"数据的访问令牌(我已经将他们的示例在线复制并粘贴到我的代码中,用于其他参数,如授权类型,我带来了范围(,在这种情况下,我尝试访问"活动"数据而不是"员工"数据。我本以为我会得到一个与权限相关的错误,而不是让我感到困惑的"错误请求",但无论如何它现在可以工作了。

上面的代码 - 实际上有这一行:

reqa.Method = "GET"

而不是这一行:

reqa.Headers.Add("GET", "/api/v0/activities/count.xml HTTP/1.1")

工作得很好,因为我在获取访问令牌的初始 Web 方法中将范围更改为 read(all(。

最新更新