GraphQL Post HttpWebRequest VB.NET语法-返回400消息



我正在尝试向GraphQL API端点发出简单的Post请求,并在VB.NET中接收400状态消息,即使在Postman中使用相同的GraphQL查询,我也会接收200消息。

我已经查看了VB.NET HttpWebRequest上的所有Microsoft产品文档,并且仍然收到来自端点的400状态消息(由于客户端原因而屏蔽(。请求时会弹出错误。GetResponse((作为端点在接受我传递的正文时遇到问题。

我确保将Post方法的主体转换为Bytes&已经尝试了许多不同的方法来首先将JSON转换为字符串,但没有这样的运气。请注意,json中有带引号的键值对,用于调用GraphQL API端点。

关于如何使用VB.NET以字符串形式传递JSON格式的GraphQL查询,有什么建议吗?

下面是我的示例VB.NET代码片段(一个非常非常基本的控制台应用程序,只有主模块(,让您了解代码是如何构建的。

Imports System
Imports System.IO
Imports System.Net
Imports System.Text

Module WebRequestHealthCheck
Public Sub Main()
Dim request As HttpWebRequest = HttpWebRequest.Create("https://maskedendpointurl.com")
request.Method = "POST"
request.ContentType = "application/json; charset=utf-8"
Dim postData As String = "{""query"":""query healthcheckExampleQuery{healthCheck{ok}}"",""variables"":{}}"
Dim byteData As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentLength = byteData.Length
'request.Headers.Add("Authorization", "Will add this later, do not need auth yet")
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteData, 0, byteData.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Console.WriteLine(responseFromServer.ToString())
Console.ReadKey()
End Sub
End Module

谢谢你抽出时间。

这是一个非常简单的修复。我改为使用HttpClient((!

Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Text

Module WebRequestHealthCheckPost
Public Sub Main()
Dim request As HttpClient = New HttpClient()
Dim url As String = "https://urlname.com"
Dim body As String = "{""query"":""query healthcheckExampleQuery{healthCheck{ok}}"",""variables"":{}}"
Dim content = New StringContent(body, Encoding.UTF8, "application/json")
Dim result = request.PostAsync(url, content)
Console.WriteLine(result.Result)
Console.ReadKey()
End Sub

End Module

最新更新