使用HttpGET的RestSharp方法AddParameter和AddQueryParameter之间的区别

Nic*_*las 18 .net c# rest restsharp asp.net-web-api

我正在使用RestSharp来调用外部API.

这有效:

var client = new RestClient(apiUrl);
var request = new RestRequest(myurl, Method.GET);

foreach (var param in parameters)
{
    request.AddQueryParameter(param.Key, param.Value);
}
var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

这不是:

var client = new RestClient(apiUrl);
var request = new RestRequest(myurl, Method.GET);

foreach (var param in parameters)
{
    request.AddParameter(param.Key, param.Value);
}
var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

导致:

System.Exception:API调用MyWebAPIMethod GET:状态码为0失败 - 无法连接到远程服务器

AddParameter和之间有什么区别AddQueryParameter

根据文档,它们在使用HttpGET时应该起到相同的作用,根据Fiddler,它们似乎也生成相同的URL.

Fab*_*lai 16

回答你的问题

AddQueryParameter在查询字符串中添加一个参数,ParameterType.QueryStringAddParameter(string, object)将参数添加为ParameterType.GetOrPost

有关每种参数类型的更多详细信息,请参阅:

GetOrPost:https://github.com/restsharp/RestSharp/wiki/ParameterTypes-for-RestRequest#getorpost

QueryString:https://github.com/restsharp/RestSharp/wiki/ParameterTypes-for-RestRequest#querystring

解决你的问题

它似乎与参数类型无关,因为抛出的异常似乎表明您甚至没有连接到远程服务器.

确保在两种情况下都传递相同的apiUrl/ myUrl.