Я использую довольно стандартную реализацию HttpClient для отправки запроса POST. У меня есть объект, сериализованный в JSON, заданный объекту StringContent, затем POSTed с использованием HttpClient.PostAsJsonAsync.C# Почему HttpClient.PostAsJsonAsync отправляет запрос GET?
У меня есть как локальный сервер, так и общедоступный сервер. 2 приложения в локальной сети, 1 для общественности. На LAN-сервере размещен экземпляр Jenkins и промежуточное приложение, пытающееся отправить этот запрос POST. На общедоступном сервере размещается бот Bot Framework, который пытается собрать данные POST.
Jenkins публикует информацию промежуточному приложению относительно сборки с использованием плагина Notification. Это приложение запрашивает дополнительную информацию о сборке с использованием Jenkins JSON API. Я хватаю соответствующие данные Дженкинса, помещаю их в объект, сериализуем в JSON и пытаюсь отправить его в Бот.
var botMessage = new JenkinsBotMessage(notification, svnData);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("{BOT URL}");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response =
await client.PostAsJsonAsync("api/jenkins", botMessage);
//....
}
Бот отвечает 405 заявлением, что он не разрешает запросы GET. Что правильно, у Bot есть только метод POST. Но посредник должен отправлять POST.
Таким образом, вопрос ПОЧЕМУ будет ли промежуточное приложение отправлять запрос GET в Бот, когда API предназначен для отправки POST? Я выкопал в HttpClient, чтобы узнать, что происходит внутри PostAsJsonAsync, и я не вижу ничего там, что бы преобразовать запрос в GET, так что возможно ли я что-то упустил из настройки сервера?
Здесь нет никаких вопросов. – toadflakz
__PostAsJsonAsync отправляет запрос GET__ - что это на самом деле означает? –
Вопрос в том, почему он отправляет GET, когда метод явно предназначен для отправки POST ... –