【问题标题】:RestSharp matching Curl syntaxRestSharp 匹配 Curl 语法
【发布时间】:2018-07-15 14:26:58
【问题描述】:

我正在尝试与似乎使用非标准设置的 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# rest get restsharp


    【解决方案1】:

    为什么要在获取请求中发布 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
    

    【讨论】:

    • 不,API 设置为在 GET 请求中需要正文,我知道这很奇怪,但它不违反 HTTP 规范,也不标准。来自 Google 之类的其他一些 API 也可以做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2015-01-18
    • 2011-07-05
    相关资源
    最近更新 更多