У меня есть два веб-проекта API 2, один из которых действует как прокси-сервер, один из них - API.Как передать объект JSON с помощью промежуточного API?
Подпись моего прокси является:
public async Task<IHttpActionResult> GetByCatId(string id)
Проект прокси называет свой скрытый апи, например:
client.BaseAddress = new Uri(CatUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync($"GetCat/{id}");
Это возвращает JSON объект, который я хочу, чтобы просто возвращение вызывающему абоненту.
Потому что C# знает, что это объект JSON, я должен разобрать его в объект JSON (т. Е. response.Content.ReadAsAsync<string>
). Однако я хочу, чтобы прокси был немым и не заботился о типах, поэтому я не могу этого сделать, потому что он попытается JSON десериализовать объект в строку и выставить исключение.
Если я захвачу поток (response.Content.ReadAsStreamAsync()
), я могу разобрать его в строке, однако, если я верну строку в новом ответе, он не будет знать, что это JSON, и просто возвращает строку, а не JSON объект (то есть ответ что-то вроде "{ content: "{ .... my json string all in one string ... }" }"
Как я могу пройти через объект JSON, сохраняя при этом тот факт, что это объект JSON
Вы можете прочитать строку json, а затем преобразовать строку в динамический объект с помощью ** JObject **, выполнив что-то вроде этого: 'string json = wait response.Content.ReadAsStringAsync(); динамический jsObj = JObject.Parse (json); ' – Cizaphil
, если вы хотите вернуть объект json, идущий с ответом, просто выполните:' return ResponseMessage (response); ' –
Метод' ResponseMessage' был тем, который я искал, если вы отвечаете как ответ, я могу отметить это - я потратил годы на поиск способа конвертировать 'HttpResponseMessage' в' IHttpActionResult', и это точный барсук – NibblyPig