Строки, отправленные через веб-API, заключаются в кавычки.C#

Место общения программистов C#
Ответить
Anonymous
 Строки, отправленные через веб-API, заключаются в кавычки.

Сообщение Anonymous »

Я столкнулся с небольшой проблемой с моим веб-API в ASP.NET 4, использующим C#. Я пытаюсь создать интерфейсный графический интерфейс, который отправляет и получает данные через несколько веб-API. Причина наличия более одного API связана с нашей сетью, которая состоит из нескольких безопасных зон. Серверы расположены в разных зонах, и простой запрос может пройти через три разных API.
В частности, я отправляю объект JSON из графического интерфейса на первый API. Предполагается, что объект JSON будет перенаправлен следующему API, а затем следующему — и оттуда создается новый объект JSON, который возвращается по тому же пути.
Сам путь работает нормально. Проблема в том, что объект JSON невозможно проанализировать после его возврата в графический интерфейс. Я получаю строку JSON, заключенную в кавычки, по одному разу для каждого API.
Строка может начинаться так:

Привет! Я строка или своего рода объект JSON!

Первый переход между API дает мне следующее:

"Эй! Я строка или своего рода объект JSON!"

После следующего прыжка это выглядит так это:

Код: Выделить всё

"\"Hey! I am a string, or a JSON object of sorts!\""
И к тому времени, когда мой графический интерфейс получит его, у нас будет что-то вроде этого:

Код: Выделить всё

"\"\\\"Hey! I am a string, or a JSON object of sorts!\\\"\""
Именно здесь синтаксический анализ не удается по очевидным причинам. Сам объект JSON отформатирован правильно, но все кавычки вызывают проблемы для анализатора JSON.net (все кавычки внутри объекта также переносятся несколько раз).
Что я пробовал до сих пор отправляет запрос как тип application/json и тип text/plain. Оба сделали одно и то же. API возвращает сообщение HttpResponseMessage, которое считывается с помощью ReadAsStringAsync(). Я также пытался избежать чтения строки и просто читал непосредственно из HttpRequestMessage в HttpResponseMessage и выполнял ReadAsStringAsync() только в графическом интерфейсе, но проблема все еще остается. Строка JSON создается с использованием метода JSON.nets Serialize() и помещается в HttpContent с помощью StringContent(). Кажется, это делает работу правильно. Я считаю, что кавычки генерируются, когда API и графический интерфейс получают сообщение HttpResponseMessage.
Любая идея, как я могу отправлять и получать строку JSON в виде необработанной строки, которая не обрабатывается ни в одном каким образом?
Я могу обойти это поведение, анализируя объект в JToken или JObject в каждом API и сериализуя его снова. Однако это не очень хорошее решение — я бы предпочел, чтобы API просто пересылал сообщение в том виде, в каком он его получил, и ничего с ним не делал. Я рассмотрел перенаправление с использованием маршрутизации, но происходит много процессов авторизации, которые требуют использования действия API, а не маршрута перенаправления.
Чтобы уточнить (TLDR ): Идеальным решением было бы, чтобы API просто передавали сообщение, не анализируя и не считывая в него ничего. Пока источник сообщения авторизован, запрос зашифрован и запрошенный URL-адрес действителен, само сообщение не имеет большого значения для каждого из «прокси» API.

Подробнее здесь: https://stackoverflow.com/questions/336 ... -in-quotes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»