首页 > 解决方案 > RestSharp 匹配 Curl 语法

问题描述

我正在尝试与似乎使用非标准设置的 API 交谈,这是有效的 curl 请求:

curl -d '{"id" : "blah"}' -H "Content-Type: application/json" -X GET http://127.0.0.1:2796/api/0.8/testing/testme

这会返回我所期望的,但是每当我尝试使用 RestSharp 执行此操作时,API 都会返回一个错误,指出它没有收到 json。这是我正在尝试使用的代码。

var client = new RestClient(server);
var request = new RestRequest("/api/0.8/testing/testme", Method.GET);

request.RequestFormat = DataFormat.Json;
request.AddJsonBody(new {id = "blah"});

IRestResponse response = client.Execute(request);
var content = response.
Console.WriteLine("Response: " + content);

这是一个 GET 请求,但它还需要发送 json 数据,所以我对它的工作原理有点困惑。它是放在正文中还是放在 URL 中?

任何建议或意见将不胜感激。

谢谢

标签: c#restgetrestsharp

解决方案


为什么要在获取请求中发布 JSON?那没有意义。

你确定你不是说你在发布 JSON 然后收到 JSON 响应吗?

我的建议是下载一个名为“Postman”的工具,并尝试首先让它在那里工作。

尝试这个:

var client = new RestClient("http://127.0.0.1:2796/api/0.8/testing/testme");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{\"id\" : \"blah\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

然后您可以阅读响应并将其解释到您的项目中。

使用

request.AddParameter("","",ParameterType.RequestBody);

代替

AddJsonBody

推荐阅读