首页 > 解决方案 > VB.NET 无法正确发送 POST 请求

问题描述

所以我使用 Newtonsoft.Json 发送 POST 请求。

我必须使用字典来指定我的键和值。

以下是 POST 在接收端的样子:

{"type":"direct","packages":["http://whatever:9999/something.pkg"]}

我的代码:

    dictData.Add("type", "direct")
    dictData.Add("packages", "[http://whatever:9999/something.pkg]")
    jsonPost.postData(dictData)

和输出:

 {
  "type": "direct",
  "packages": "[http://whatever:9999/something.pkg]"
   }

所以问题是:我不希望有空格,我希望所有内容都在一行中,并且我希望 URL 用引号引起来。我尝试了双“”方法,得到了我的引号,但它还在 URL 的开头和结尾放置了一个 \。

我敢肯定这很简单,但是对于我的一生,我找不到任何有用的东西。

标签: jsonstringvb.netdictionarypost

解决方案


我会简单地创建一个 Jobject (第一个 {} )并向其中添加东西。喜欢:

Dim JSON_Post As New JObject
JSON_Post.Add("type", "direct")
Dim JSON_Array As New JArray
JSON_Array.Add("http://whatever:9999/something.pkg")
'Or JSON_Post.Add("packages", New JArray From {"http://whatever:9999/something.pkg"})
JSON_Post.Add("packages", JSON_Array)
Debug.Print(JSON_Post.ToString)

'Output
{
  "type": "direct",
  "packages": [
    "http://whatever:9999/something.pkg"
  ]
}

你可以对字典和列表做同样的事情,字典是键值部分,所以它总是看起来像

"type1": "direct1",
"type2", "direct2"...

因此,您需要(一次)添加更多项目,例如获取 [] 的列表。

这些空格并不重要,它会被很好地阅读,它只是显示的格式。


推荐阅读