RestSharp PUT 请求参数

RestSharp PUT request parameters

我在弄清楚如何使用 RestSharp 创建放置请求时遇到问题。

我需要在同一请求中传递一个整数,后跟一个 JSON 正文。

到目前为止我有这个:

for (var i = 0; i < ReorderedTasks.Count; i++) {
            var reorderedTasksJson = new JavaScriptSerializer().Serialize(ReorderedTasks[i]);
            var request = new RestRequest("api/task/5/{ID}/", Method.PUT);
            request.AddParameter("ID", ReorderedTasks[i].ID.ToString(), ParameterType.UrlSegment);
            request.AddParameter("application/json; charset=utf-8", reorderedTasksJson, ParameterType.RequestBody);
            client.Execute(request);
        }

我已经在 POST 上测试了 JSON 广告 requestBody,它工作正常。我认为我的问题是我试图传递的第一个参数 ReorderedTasks[i].ID ,我不确定我是否正确处理了这个参数的传递。

我在 class.

的开头初始化了客户端

问题是数据库没有更新,我需要隔离问题。以上是处理我需要传递的两个参数的正确方法吗?

好吧,这取决于 webApi 期望什么..

您可以使用 Fiddler 检查通过线路发送的内容以及您收到的响应 (http://www.telerik.com/fiddler)

此外 - 以下是其他用户如何使用 RestSharp 的一些示例

我建议将 ReorderedTasks[i].ID.ToString() 直接放到 url 路径中。

var request = new RestRequest($"api/task/5/{ReorderedTasks[i].ID.ToString()}/", Method.PUT);

这将有助于减少 http 请求格式可能出现的问题。

我会在这里添加它,以便有人能从中受益。

如果您的端点 URL 具有您想与请求一起传递的 ?param=value&param2=value 之类的参数,RestSharp 的 AddParameter(string, string) 将无法与 PUT 方法一起使用(但它可以工作用 GET 就好了,或者如果端点没有 URL 参数,所以它是骗人的)

使用 AddParameter(string, string, ParameterType.QueryString) 以便 PUT 方法正常工作。