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

时间:2019-09-12 16:51:10

标签: vb.net web-services

我是使用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和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命令的工作原理相同。

1 个答案:

答案 0 :(得分:0)

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

不确定为什么我被否决了,但是没关系...

当我终于让Web服务的作者向我发送服务器日志时,通过我的尝试发布,立即清楚了问题出在哪里。他告诉我,我需要将JSON包用单引号引起来。然后,.NET也添加了引号,导致JSON包含在双引号中。 在我的原始问题的(编辑的)代码片段中,用于创建JSON数据字符串的行应为:

将orderString设为字符串=(New JavaScriptSerializer())。Serialize(orderInfo)