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.QueryString
而AddParameter(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
.