c# - Restsharp 补丁请求

标签 c# for-loop restsharp

我正在使用restsharp客户端。尝试创建补丁请求并更新几个字段。这是我第一次使用 RestSharp 的经历。我收到 json 解析器错误(JSON 补丁文档格式错误且无法解析)。

我可以毫无问题地执行 POST 请求。

这是我的代码:

var client = new RestClient(RequestProperties.ClientUrl + @"Jobs?id=" + jobs.JobAccessId.ToString());    
var token = RequestProperties.Token;

client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", token));

var request = new RestRequest(Method.PATCH) { RequestFormat = DataFormat.Json };

request.AddHeader("Postman-Token", token);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json-patch+json");
request.AddJsonBody(new { op = "replace", path = "/shippedDate", value = jobs.ShippedDate });
request.AddJsonBody(new { op = "replace", path = "/statusdCode", value = jobs.StatusdCode.ToString() });

IRestResponse response = client.Execute(request);

最佳答案

此代码有几个问题:

  1. 最好为一个基本 URL 保留一个 RestClient 实例。基本 URL 不应包含任何参数值。
  2. 我们建议使用 AddQueryParameter 指定每个请求的查询参数。
  3. 您最好使用 JWT 授权方为请求提供不记名 token ,而不是手动添加 header 。它也是在客户端级别完成的。
  4. 使用AddJsonBody时,无需添加内容类型和请求数据类型,一切都会自动完成。
  5. 也许最重要的是,对于任何类型的请求,您只能有一个正文参数。这不是 RestSharp 的限制,这就是 HTTP 的工作原理。

关于c# - Restsharp 补丁请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337257/

相关文章:

c# - for循环中的字符串连接导致应用程序停止 - Xamarin

c# - 在字符串中执行 isnull

javascript - 连接字符串并将某些数字更改为另一个数字

c# - RestSharp 请求中止 - 无法创建 SSL/TLS 安全通道

c# - 如何删除 JSON 字符串中的开始和结束双引号以及所有反斜杠 - C#

c# - 将多个 List<string[]> 加入一个新列表

C# 反射 : How do I initialize a field created dynamically in TypeBuilder?

javascript - 如何以编程方式禁用 onclick 按钮功能

javascript - 检查字符串是否包含其他字符串的集合

c# - 等待 ExecuteAsync() 结果