为什么在使用 VS 2022 在 C# (RestSharp) 中使用我的 API 时我总是得到 "Missing/Malformed URL Parameters"?
Why do I keep getting "Missing/Malformed URL Parameters" when consuming my API in C# (RestSharp) with VS 2022?
我正在尝试在 Visual Studio 2022.
中使用 RestSharp 在 C# 中执行 POST 请求
我使用 Postman 测试了 API,这是成功的。 API 需要一个 64 位编码的 Basic Auth(我有)和一个唯一的 API 密钥(我也有)。然后我查看了 Postman 提供的 C# Restsharp 代码,并尝试将其复制粘贴到我的 VS 项目中,但大多数库已被弃用。然后我最终 修改了代码,所以它没有给我任何错误,并且代码本身运行,但出现语义错误:请求 returns “丢失或格式错误 URL参数。在 body 参数中,我以
形式发送一个参数
var body = @"{""fieldNameHere"": intHere}";
我的完整代码(编辑):
var options = new RestClientOptions("URLHERE")
{
Timeout = -1
};
var client = new RestClient(options);
var request = new RestRequest
{
Method = Method.Post
};
request.AddHeader("API_KEY", "keyHere");
request.AddHeader("Authorization", "authHere");
request.AddHeader("Content-Type", "application/json");
var body = @"{""fieldNameHere"": intHere}";
request.AddParameter("application/json; charset=utf-8", body, ParameterType.RequestBody);
request.RequestFormat = DataFormat.Json;
RestResponse response = await client.ExecuteAsync(request);
所以我尝试使用 JObject 作为参数,得到了同样的错误,这是我的代码:
JObject jObjectBody = new JObject();
jObjectBody.Add("FieldName", intHere);
request.AddParameter("application/json", jObjectBody, ParameterType.RequestBody);
var clientValue = await client.ExecuteAsync(request);
我也尝试过使用 HttpWebRequest,但遇到了一个身份验证错误,所以不确定那里发生了什么,在其他任何地方都没有。无论如何都宁愿使用 RestClient 。这是我尝试执行 body 参数的另一种方式:
string postData = "{\"FieldNameHere\":" + intHere + "}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
我还没有找到任何有用的东西。如果有人可以指导我找到解决方案,我将不胜感激,谢谢。这肯定是 body 给我的问题。
啊!出于某种原因,像这样表达我的 body 是可行的:
var body = new { FieldNameHere = intHere }
request.AddJsonBody(body);
我不知道为什么会这样,但确实如此!
无效的列表:
- JObject技术
- 切换header放置
- 自己编码授权
- 如何设置 RR 实例化
- 有或没有明确说明 application/json(也包括字符集和排除)
- 使用 HttpWebRequest 而不是 RestSharp
我正在尝试在 Visual Studio 2022.
中使用 RestSharp 在 C# 中执行 POST 请求我使用 Postman 测试了 API,这是成功的。 API 需要一个 64 位编码的 Basic Auth(我有)和一个唯一的 API 密钥(我也有)。然后我查看了 Postman 提供的 C# Restsharp 代码,并尝试将其复制粘贴到我的 VS 项目中,但大多数库已被弃用。然后我最终 修改了代码,所以它没有给我任何错误,并且代码本身运行,但出现语义错误:请求 returns “丢失或格式错误 URL参数。在 body 参数中,我以
形式发送一个参数var body = @"{""fieldNameHere"": intHere}";
我的完整代码(编辑):
var options = new RestClientOptions("URLHERE")
{
Timeout = -1
};
var client = new RestClient(options);
var request = new RestRequest
{
Method = Method.Post
};
request.AddHeader("API_KEY", "keyHere");
request.AddHeader("Authorization", "authHere");
request.AddHeader("Content-Type", "application/json");
var body = @"{""fieldNameHere"": intHere}";
request.AddParameter("application/json; charset=utf-8", body, ParameterType.RequestBody);
request.RequestFormat = DataFormat.Json;
RestResponse response = await client.ExecuteAsync(request);
所以我尝试使用 JObject 作为参数,得到了同样的错误,这是我的代码:
JObject jObjectBody = new JObject();
jObjectBody.Add("FieldName", intHere);
request.AddParameter("application/json", jObjectBody, ParameterType.RequestBody);
var clientValue = await client.ExecuteAsync(request);
我也尝试过使用 HttpWebRequest,但遇到了一个身份验证错误,所以不确定那里发生了什么,在其他任何地方都没有。无论如何都宁愿使用 RestClient 。这是我尝试执行 body 参数的另一种方式:
string postData = "{\"FieldNameHere\":" + intHere + "}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
我还没有找到任何有用的东西。如果有人可以指导我找到解决方案,我将不胜感激,谢谢。这肯定是 body 给我的问题。
啊!出于某种原因,像这样表达我的 body 是可行的:
var body = new { FieldNameHere = intHere }
request.AddJsonBody(body);
我不知道为什么会这样,但确实如此!
无效的列表:
- JObject技术
- 切换header放置
- 自己编码授权
- 如何设置 RR 实例化
- 有或没有明确说明 application/json(也包括字符集和排除)
- 使用 HttpWebRequest 而不是 RestSharp