クエリ文字列パラメータとJSON本体(POSTの場合)を含むように.NET HttpClient.SendAsync()リクエストを設定するにはどうすればよいですか?.NET HttpClientがクエリ文字列とJSON本体をPOSTに追加
// Query string parameters
var queryString = new Dictionary<string, string>()
{
{ "foo", "bar" }
};
// Create json for body
var content = new JObject(json);
// Create HttpClient
var client = new HttpClient();
client.BaseAddress = new Uri("https://api.baseaddress.com/");
var request = new HttpRequestMessage(HttpMethod.Post, "something");
// Setup header(s)
request.Headers.Add("Accept", "application/json");
// Add body content
request.Content = new StringContent(
content.ToString(),
Encoding.UTF8,
"application/json"
);
// How do I add the queryString?
// Send the request
client.SendAsync(request);
私が見てきたすべての例では、
request.Content = new FormUrlEncodedContent(queryString)
を設定するが、その後、私は私が必要なものだったMicrosoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString()
を見つけてしまったrequest.Content
ように見える 'HttpRequestMessage'は' RequestUriを持っています'property](https://msdn.microsoft.com/en-us/library/system.net.http.httprequestmessage.requesturi(v = 118).aspx);それを使ってクエリ文字列を追加してください(おそらく、新しい 'Uri'オブジェクトを作成し、それに' RequestUri'を設定する必要があります)。 –
@MikeMcCaughanこれを調べて、私のendpoint + queryString情報で 'RequestUri'プロパティを再設定すると、' HttpClient'オブジェクトでグローバルに設定した 'HttpClient.BaseAddress'を上書きしていることがわかりました。しかし、これは私が探していた解決策に導いてくれました。 –