将curl转换为HtttClient请求

时间:2019-11-23 22:29:03

标签: c# curl httpclient

我正在尝试在HttpClient中执行此curl请求(来自API文档): 请注意,以下代码只是从其文档中复制而来,并不包含我的任何信息。

POST / oauth / token(获取访问令牌)

   $ curl -v -X POST https://api.tink.com/api/v1/oauth/token \
   -d 'code=1a513b99126ade1e7718135019fd119a' \
   -d 'client_id=YOUR_CLIENT_ID' \
   -d 'client_secret=YOUR_CLIENT_SECRET' \
   -d 'grant_type=authorization_code'

   {
       "access_token": "78b0525677c7414e8b202c48be57f3da",
       "token_type": "bearer",
       "expires_in": 7200,
       "refresh_token": "33f10ce3cb1941b8a274af53da03f361",
       "scope": "accounts:read,statistics:read,transactions:read,user:read"
   }

我尝试向oauth / token端点发出发布请求,请求的所有信息都以标头(带有空主体)和json文档(带有和不带有标题)的形式请求。 当我仅在标题中包含信息时,我会收到401,但我已验证所有数据都是正确的。我尝试过的所有其他方式都产生了400。

据我所知,curl下面的json是响应,但是Im根本不习惯于curl。

1 个答案:

答案 0 :(得分:2)

这里有一个方便的网站:https://curl.olsh.me/

我不建议通过网络发送机密,因此请确保首先匿名化值,然后再将其转换回去。

对于您粘贴的命令,您将得到:

using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.tink.com/api/v1/oauth/token"))
    {
        var contentList = new List<string>();
        contentList.Add("code=1a513b99126ade1e7718135019fd119a");
        contentList.Add("client_id=YOUR_CLIENT_ID");
        contentList.Add("client_secret=YOUR_CLIENT_SECRET");
        contentList.Add("grant_type=authorization_code");
        request.Content = new StringContent(string.Join("&", contentList));
        request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); 

        var response = await httpClient.SendAsync(request);
    }
}

您返回的401标头可能是由于传递了错误的ID和密码,我想有一种方法可以让您获取测试凭据。

相关问题