我是使用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命令的工作原理相同。
答案 0 :(得分:0)
我不想回答自己的问题,但这可能有一天对其他人会有所帮助。
不确定为什么我被否决了,但是没关系...
当我终于让Web服务的作者向我发送服务器日志时,通过我的尝试发布,立即清楚了问题出在哪里。他告诉我,我需要将JSON包用单引号引起来。然后,.NET也添加了引号,导致JSON包含在双引号中。 在我的原始问题的(编辑的)代码片段中,用于创建JSON数据字符串的行应为:
将orderString设为字符串=(New JavaScriptSerializer())。Serialize(orderInfo)