VB.NET 如何在 WebClient() 请求中插入数据

VB.NET how to insert data in WebClient() request

我不熟悉使用 Web 服务。我正在尝试从 VB.NET 控制台应用程序向 Web 服务发送 POST 请求。我被告知我需要包含数据,但没有在 URL 中传递变量,我知道该怎么做。 以下 cURL 命令有效(出于安全原因,在我删除大部分不记名令牌、订单内容和真实网址之前)。 Web 服务使用未知语言。

如何在 VB 中插入 --data 部分?

curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer eyJhbGciOiJIU..." --data '{"order":{"content":"file_version:1.0\r\nstart_order\r\n ... \r\nend_order\r\n"}}' https://someURL/api/push_order

下面的注释代码是我尝试的其他选项之一,除了发送 --data et URL .../api/push_order/?orderString 的结尾,它也产生了一个错误。

Dim server as String = "https://<someURL>"
Dim url as String = ""       
Using client As New WebClient()
     client.Headers("Content-Type") = "application/json"
     client.Headers("Authorization") = "Bearer " + BearerToken

    'Dim orderInBytes As Byte() = Encoding.ASCII.GetBytes((New JavaScriptSerializer()).Serialize(orderInfo) + "'")
     Dim orderString As String = "'" + (New JavaScriptSerializer()).Serialize(orderInfo) + "'"
     url = String.Format("{0}/api/push_order", server)

    'client.UploadData(url, "POST", orderInBytes)
    ''This returns "'The remote server returned an error: (400) Bad Request.'"
    client.UploadString(url, "POST", orderString)

End Using

我希望 VB 代码能像 curl 命令一样工作。

我不想回答我自己的问题,但这有一天可能会对其他人有所帮助。

不知道为什么我投了反对票,但无论如何...

当我最终让 Web 服务的作者向我发送服务器日志时,根据我对 post 的尝试,我立即清楚了问题所在。他告诉我,我需要将我的 JSON 包裹用“ '” 单引号引起来,我确实这样做了。 .NET 随后也添加了引号,导致 JSON 被双引号括起来。 在我原来的问题的(编辑的)片段中,创建 JSON 数据字符串的行应该是:

Dim orderString As String = (New JavaScriptSerializer()).Serialize(orderInfo)