나는 POST 요청을 보내기 위해 꽤 표준적인 HttpClient 구현을 사용하고있다. 나는 JSON으로 직렬화 된 객체를 가지고 있으며, 그 다음 StringContent 객체에 주어지며 HttpClient.PostAsJsonAsync를 사용하여 POST된다.C# 왜 HttpClient.PostAsJsonAsync가 GET 요청을 보내고 있습니까?
LAN 서버와 공용 서버가 있습니다. LAN상의 2 개의 응용 프로그램, 일반인의 응용 프로그램 1 개. LAN 서버는 Jenkins 인스턴스와이 POST 요청을 보내려고하는 중개 응용 프로그램을 호스트합니다. 공용 서버는 POST 데이터를 수집하려고하는 Bot Framework 봇을 호스팅합니다.
Jenkins는 알림 플러그인을 사용하여 빌드와 관련된 정보를 중개 응용 프로그램에 게시합니다. 이 응용 프로그램은 Jenkins JSON API를 사용하여 빌드에 대한 추가 정보를 요청합니다. 관련 Jenkins 데이터를 가져 와서 객체에 넣고 JSON에 직렬화하여 Bot에 보냅니다.
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);
//....
}
Bot는 GET 요청을 허용하지 않는다고 말하는 405로 응답합니다. 어느 것이 옳은가, 봇은 POST 메소드만을 가지고 있습니다. 그러나 중개인이 POST를 보내야합니다.
그래서 WHY입니다. API가 POST를 보내려고 할 때 중개 응용 프로그램이 GET 요청을 보낼 수 있습니까? 나는 HttpClient를 파고 들어서 PostAsJsonAsync 내부에서 무슨 일이 일어나는지 살펴 보았습니다. 요청이 GET으로 변환 될 수는 없으므로 서버 설정에서 누락 된 것이있을 수 있습니까?
여기에 문제가 없습니다. – toadflakz
__PostAsJsonAsync GET 요청 보내기 __ 실제로 의미하는 것은 무엇입니까? –
질문은 왜 방법이 명확하게 POST를 보내려고 할 때 GET을 보내는가 ... –