首页 > 解决方案 > 将 Json Content-Type 传递给 application/x-www-form-urlencoded POST REQUEST API C#

问题描述

我有一个通过 RestSharp 发送 json 连接到的端点,它对我来说正常工作是这样的:

 public void GetToken()
    {
       
        var client = new RestClient("UrlEndpoint");
        var req = new RestRequest(Method.POST);
        req.AddHeader("Content-Type", "application/json");
        req.AddParameter("application/json", JsonConvert.SerializeObject(new { user = "usuario", password = "password" }), ParameterType.RequestBody);
        var res = client.Execute(req);
    }

现在我需要使用另一个端点,但它的 Content-Type 是 application / x-www-form-urlencoded,我这样做了:

public void GetResponse()
    {
        var client = new RestClient("https://sdx-identityserver-qa.azurewebsites.net/connect/token");
        var req = new RestRequest(Method.POST);
        req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
        req.AddParameter("application/x-www-form-urlencoded", "client_id=sdx_corefin_pel&client_secret=8c6a56d2-bd3a-4e83-a578-cb78c6e66f19&grant_type=client_credentials", ParameterType.RequestBody);
   
      
        var res = client.Execute(req);
    }

但它向我抛出了一个状态码 0 和一个错误:“无法将数据写入传输连接:现有连接被远程主机强制中断。”

我也试过这个:

 public void GetResponse()
    {
        var client = new RestClient("https://sdx-identityserver-qa.azurewebsites.net/connect/token");
        var req = new RestRequest(Method.POST);
        req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
       
       req.AddParameter("client_id", "sdx_corefin_pel");
       req.AddParameter("client_secret", "8c6a56d2-bd3a-4e83-a578-cb78c6e66f19");
       req.AddParameter("grant_type", "client_credentials");
      
        var res = client.Execute(req);
    }

但答案是同样的错误,

在邮递员中效果很好:

邮递员端点

我已经添加了变量“范围”,但它也不起作用,我在每个 req.AddParameter、ParameterType.GetOrPost 中添加了但答案是一样的。

谢谢你的帮助。

标签: c#asp.netvisual-studiorestsharp

解决方案


推荐阅读