将 curl 转换为 HtttClient 请求

Converting curl to HtttClient request

我正在尝试在 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 端点发出 post 请求,请求的所有信息都是 header(空 body)和一个 json 文档(有和没有 headers)。 当我只有 header 中的信息时,我得到了 401,但我已经验证所有数据都是正确的。我尝试过的所有其他方法都生成了 400。

据我了解curl下面的json是响应,但是我一点都不习惯curl。

这里有一个方便的网站: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 headers 可能是由于传递了错误的 ID 和密码,我想您有办法获得测试凭据。