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

本文关键字:AddQueryParameter AddParameter 区别 方法 HttpGET RestSharp 使用 | 更新日期: 2023-09-27 18:13:11

我正在使用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);

这并不:

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

导致:

系统。异常:API Call MyWebAPIMethod GET: Failed with status code0 -无法连接到远程服务器

AddParameterAddQueryParameter的区别是什么?

根据文档,当使用HttpGET时,它们应该具有相同的功能,并且根据Fiddler,它们似乎也会生成相同的URL

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

回答你的问题

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

回答OP和其他可能对这个概念有困难的人。我花了一段时间才理解这个概念。您可能需要可视化如何在url中构造GET请求消息的RESTful标准,而不是构造POST请求消息。

您将注意到,对于GET,参数附加到URL报头而对于POST,参数放置在消息体中。RestSharp的方法AddQueryParameter()只会在消息头中添加(Query)参数,而AddParameter()只会在消息体中添加参数。如下所示,GET有一个值为"flavors"的查询参数。对于POST,参数contact_name和company_name位于消息体的底部。

,

GET消息格式:

GET http://www.consumerdiarydemo.cbrnetwork.test.au/api/ConsumerDiary/getSizesOrFlavours/Flavours HTTP/1.1主持人:www.consumerdiarydemo.cbrnetwork.test.au连接:维生接受:application/json用户代理:Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML,像壁虎)Chrome/58.0.3029.110 Safari/537.36推荐人:http://www.consumerdiarydemo.cbrnetwork.test.au/ConsumerDiaryPage2templateAccept-Encoding: gzip, deflate, sdch接收语言:en - en - us; q = 0.8, en; q = 0.6


POST消息格式:

文章http://localhost: 1234567/api/客户HTTP/1.1接受:application/json, text/javascript, /;q = 0.01X-Requested-With: XMLHttpRequest内容类型:应用程序/x-www-form-urlencoded;utf - 8字符集=

{"contact_name":"value_data1"、"company_name":"value_data2"}

AddParameter/Get or Post

GetOrPost根据方法的不同表现不同。如果您执行GET调用,RestSharp将以url?name1=value1&name2=value2的形式将参数附加到Url。

在POST或PUT请求中,这取决于您是否将文件附加到请求中。如果没有,参数将以name1=value1&name2=value2的形式作为请求的主体发送。

裁判:https://restsharp.dev/usage.html get或post

AddQueryParameter/Query String

QueryString的工作方式与GetOrPost类似,除了它总是将参数附加到url?name1=value1&name2=value2形式的url中,无论请求方法如何。

裁判:https://restsharp.dev/usage.html查询字符串

相关文章:
  • 没有找到相关文章