Мне нужно отправить некоторые поля (из приложения VB.Net) в Словаре в формате JSON в веб-службы.
Ниже приведен код:
Dim dict As New Dictionary(Of String, String)
dict.Add("Drinks", "2")
dict.Add("ID", "1")
Dim parameters As String = JsonConvert.SerializeObject(dict)
Dim jsonString As String = "{""Pram"":""" + parameters + """}"
Dim Uri As New Uri(String.Format("http://***/WebServices/UpdateSQL"))
Dim data = Encoding.Default.GetBytes(jsonString)
Dim result_post As String = SendRequest(Uri, data, "application/json", "POST")
В моих веб-сервисах (ASP.NET С #) я пытаюсь захватить строку выше, как в приведенном ниже коде
public ActionResult UpdateSQL(string Pram)
Я получаю код ошибки 500: внутренняя ошибка сервера. Я пробовал передавать отдельные поля из приложения VB, и это отлично работает. Ниже приведен код, если я отправлю отдельные поля
Dim jsonString As String = "{""SQL"":""" + sSQL + """," &
"""TableName"":""" + tableName + """," &
"""Drinks"":""""2"",""ID"":""1""}"
Приведенная выше строка json при отправке работает абсолютно нормально и фиксируется в веб-сервисах, как показано ниже:
public ActionResult UpdateSQL(string SQL, string TableName, string Drinks, string ID)
Это только когда я сериализую Dictionary как строку и пытаюсь отправить, получая внутреннюю ошибку сервера. Пожалуйста, сообщите, если мне что-то не хватает.
1 ответ
Dim dict As New Dictionary(Of String, String)
dict.Add("Drinks", "2")
dict.Add("ID", "1")
Dim parameters As String = JsonConvert.SerializeObject(dict, Formatting.None)
Dim Uri As New Uri(String.Format("http://localhost:60627/home/test/"))
Dim webClient As New WebClient()
Dim resByte As Byte()
Dim resString As String
Dim reqString() As Byte
webClient.Headers("content-type") = "application/json"
Dim senddata As Object = JsonConvert.SerializeObject(New With {Key .param = parameters}).ToString()
reqString = Encoding.Default.GetBytes(senddata)
resByte = webClient.UploadData(Uri, "post", reqString)
resString = Encoding.Default.GetString(resByte)
Сначала измените этот тип конкатинации "{" "Детская коляска" ":" "" + параметры + "" "} " потому что это вызывает небольшое недоумение.
И данные не отправляются в свойство сервера, потому что проблема заключается в последовательности экранирования, из-за которой Concat не получает надлежащую сериализацию данных.
Выше я меняю код для
Dim parameters As String = JsonConvert.SerializeObject(dict, Formatting.None)
Это изменить данные
{"Напитки": "2", "ID": "1"}
Следующая сериализация - это изменение
{"param": "{\" Напитки \ ": \" 2 \ ", \" ID \ ": \" 1 \ "}"}
Но ваша Serlization отправляемых данных
{"param": "{" Напитки ":" 2 "," ID ":" 1 "}"}
Итак, данные не отправляются должным образом
Меня правильно проверили, все работает нормально ....
Похожие вопросы
Связанные вопросы
Новые вопросы
json
JSON (объектная нотация JavaScript) - это сериализуемый формат обмена данными, предназначенный для машинного и человеческого чтения. Не используйте этот тег для собственных объектов JavaScript или литералов объектов JavaScript. Прежде чем задать вопрос, проверьте свой JSON с помощью валидатора JSON, такого как JSONLint (https://jsonlint.com).
parameters
в"
в вашемjsonString
, поскольку он будет сериализован как полный объект, а в вашей текущей версии это будет объект, представленный строкаPram
, который содержит объект со свойствамиSQL
,TableName
,Drinks
иID