私は、HttpClientのかなり標準的な実装を使用してPOSTリクエストを送信しています。 JSONにシリアル化されたオブジェクトがあり、StringContentオブジェクトに与えられ、次にHttpClient.PostAsJsonAsyncを使用してPOSTされます。C#なぜHttpClient.PostAsJsonAsyncがGETリクエストを送信していますか?
私はLANサーバーとパブリックサーバーの両方を持っています。 LAN上で2つのアプリケーション、一般には1つ。 LANサーバーはJenkinsインスタンスと、このPOST要求を送信しようとしている仲介アプリケーションをホストします。パブリックサーバは、POSTデータを収集しようとしているボットフレームワークボットをホストしています。
Jenkinsは、Notificationプラグインを使用してビルドに関する情報を仲介アプリケーションに通知します。このアプリケーションは、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);
//....
}
ボットは405でGET要求を許可しないと応答します。これは正しいですが、BotはPOSTメソッドしか持っていません。しかし、仲介者はPOSTを送信する必要があります。
したがって、質問がWHYの場合、APIがPOSTを送信するように意図されている場合、仲介アプリケーションはGET要求をBotに送信しますか?私はHttpClientを掘り下げてPostAsJsonAsyncの内部で何が起こるのか見てきました。そこにはリクエストをGETに変換するものは何も表示されません。サーバーの設定から何か不足する可能性がありますか?
ここに質問はありません。 – toadflakz
__PostAsJsonAsync GET要求を送信する_実際にはどういう意味ですか? –
質問は、メソッドが明らかにPOSTを送信することを意味しているときにGETを送信する理由です... –