HttpClient- 向 Get 请求添加参数

本文关键字:添加 参数 请求 Get HttpClient- | 更新日期: 2023-09-27 18:31:07

我有一个RestRequest,我正在尝试将其转换为HttpClient Get请求。 有什么方法可以按照下面的方式发送参数吗?

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);
}

HttpClient- 向 Get 请求添加参数

如果我

没记错的话,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,这是首选方法,并将指定的参数放入查询字符串中。