【问题标题】:C# Posting to graphql API always returns 500 errorC# 发布到 graphql API 总是返回 500 错误
【发布时间】:2021-03-31 05:31:16
【问题描述】:

我在 localhost (http://localhost:23061/graphql) 上运行了 GraphQL,我试图直接在 C# 中复制我在 UI 中执行的查询。我已经事先验证了邮递员上的 JSON 包是正确的,但是每当在 C# 中尝试这样的包时,它只会返回一个 500 错误,我尝试了这个包的很多变体(以 ' 交换 " 作为示例)但不幸的是所有一样。

所以我在邮递员上使用的查询是 {"query":"{goldBalance(address:"0xa49d64c31A2594e8Fb452238C9a03beFD1119963")}"} 这在邮递员中返回就好了。

然而,当把它移到 C# 时;

    static async System.Threading.Tasks.Task Main(string[] args)
{
    var httpClient = new HttpClient();
    var url = "http://localhost:23061/graphql";
    var data = "{ \"query\":\"{goldBalance(address: \"0xa49d64c31A2594e8Fb452238C9a03beFD1119963\")}\"}";
    var content = new StringContent(data.ToString(), Encoding.UTF8, "application/json");
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    var result = httpClient.PostAsync(url, content).Result;


    Console.WriteLine(result);
}

当这个运行时,它总是会返回;

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    {
      Date: Tue, 30 Mar 2021 20:18:36 GMT
      Server: Kestrel
      Content-Length: 0
    }

我最初认为这可能是 HTTPClient 问题但 WebRequest,所以这显然是我在某处发送的问题。

【问题讨论】:

  • 你试过直接从邮递员那里得到代码sn-p吗?当我使用邮递员执行此操作时,它使用的是 RestClient 对象而不是 HttpClient。试试看。
  • 哦,哇,我不知道 Postman 可以创建代码 sn-ps。我真的在这上面浪费了两个晚上。非常感谢。
  • 我很高兴能帮上忙。祝你好运!

标签: c# graphql


【解决方案1】:

感谢 Hanlet,Postman 有一个代码 sn-p 部分,它确实有解决方案。赞赏。

我现在也弄清楚了问题所在,我没有在地址周围双重转义。谢谢。

【讨论】:

【解决方案2】:

这是我使用 Postman 的类似请求得到的结果:

var client = new RestClient("http://localhost:23061/graphql");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic Og==");
request.AddHeader("Content-Type", "text/plain");
request.AddParameter("text/plain", "{\"query\":\"{goldBalance(address: \"0xa49d64c31A2594e8Fb452238C9a03beFD1119963\")}\"}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

尝试使用它而不是 HttpClient。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多