HttpClientGetリクエストに変換しようとしているRestRequestがあります。以下の方法でパラメータを送信する方法はありますか?
private readonly IRestClient _restClient;
public Type GetInfo(string name)
{
var request = new RestRequest(url, Method.GET);
request.AddParameter("name", "ivar");
var response = _restClient.ExecuteRequest(request);
return ExecuteRequest<Type>(request);
}
正しく思い出せば、RestSharpのAddParameter
メソッドはリクエストヘッダーを追加せず、GETのUri引数またはPOSTのリクエストボディパラメーターを追加します。
HttpClient
に類似したメソッドはないため、GETリクエストのURIを自分でフォーマットする必要があります。
これは、文字列とオブジェクトのペアの辞書を取得し、URIクエリ文字列をフォーマットする便利な方法です。
public static string AsQueryString(this IEnumerable<KeyValuePair<string, object>> parameters)
{
if (!parameters.Any())
return "";
var builder = new StringBuilder("?");
var separator = "";
foreach (var kvp in parameters.Where(kvp => kvp.Value != null))
{
builder.AppendFormat("{0}{1}={2}", separator, WebUtility.UrlEncode(kvp.Key), WebUtility.UrlEncode(kvp.Value.ToString()));
separator = "&";
}
return builder.ToString();
}
Request.AddParameter(name, value)
を呼び出している行で、代わりにRequest.AddQueryParameter(name, value)
に変更します。 GETの場合、これは推奨されるアプローチであり、指定したパラメーターをクエリ文字列に入れます。