我在解决如何使用RestSharp创建put请求时遇到了问题。
我需要在同一个请求中传递一个整数,后跟一个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
的第一个参数,我不确定我是否正确处理了这个问题。
我在课程开始时初始化了客户端。
问题是数据库没有更新,我需要隔离问题。以上是处理我需要传递的两个参数的正确方法吗?
答案 0 :(得分:1)
我建议将ReorderedTasks [i] .ID.ToString()直接放到url路径。
var request = new RestRequest($"api/task/5/{ReorderedTasks[i].ID.ToString()}/", Method.PUT);
这将有助于减少http请求格式可能出现的问题。
答案 1 :(得分:0)
这取决于webApi期望的内容..
您可以使用Fiddler检查通过电汇发送的内容以及您获得的响应(http://www.telerik.com/fiddler)
此外 - 以下是其他用户如何使用RestSharp的示例 How do I use PUT in RestSharp?
答案 2 :(得分:0)
我会在这里添加,所以有人会从中受益。
如果您的端点网址包含您想要传递的?param=value¶m2=value
参数,那么RestSharp的AddParameter(string, string)
将无法使用PUT
方法(但它可以正常使用{{1}或者如果端点没有URL参数,那么它就是欺骗性的)
使用GET
以使AddParameter(string, string, ParameterType.QueryString)
方法正常工作。