如何解决设置ParameterType = GetOrPost
我与RestSharp遇到一个奇怪的间歇性问题。我使用它向服务器提交POST身份验证请求。但是在某些我无法隔离的条件下,此身份验证调用失败。通过查看服务器日志,我看到了GET请求而不是POST。我真的很想知道这怎么可能。
这是提交身份验证请求的代码:
var client = new RestClient(m_baseUrl);
var request = new RestRequest("https://dummyserver.com/api/auth",Method.POST);
request.AddParameter("client_id",apiCredentials.ApiKey,ParameterType.GetOrPost);
request.AddParameter("client_secret",apiCredentials.ApiSecret,ParameterType.GetOrPost);
request.AddHeader("Content-Type","multipart/form-data");
IRestResponse response = await client.ExecutePostTaskAsync(request);
由于它是分布式应用程序,因此我对客户端请求的了解不多。遥测只是确认身份验证失败。
RestSharp是否有可能(已知错误)将该请求转换为GET?
第二个问题是,使用这两种语法创建的请求是否有任何区别:
- request.AddParameter(“ client_id”,apiCredentials.ApiKey,ParameterType.GetOrPost);
- request.AddParameter(“ client_id”,apiCredentials.ApiKey);
出于安全考虑,我需要将参数作为表单数据提交。
感谢您的帮助。
解决方法
我认为POST
请求不可能以GET
的身份执行。考虑您有一些代码(不是您问题中的代码)可以做到这一点。在ExecutePost
构造函数中显式设置请求类型时,甚至使用RestRequest
也是多余的。
关于第二个问题,没有真正的区别。默认参数类型为GetOrPost
。我还相信,默认情况下,在没有JSON或XML正文的情况下,我们对multipart/form-data
请求使用POST
。
通过查看RestSharp的代码,您可以轻松找到它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。