HTTP请求中的Curl -u等效命令是什么?

23

我一直在尝试为项目连接Toggl API,他们的示例都是使用CURL。我试图使用C#包装器创建报告时会导致错误请求,因此我想使用Postman尝试简单的HTTP请求。

然而,我似乎无法让HTTP请求接受我的API Token。这里是他们提供的示例(CURL):

curl -u my-secret-toggl-api-token:api_token -X GET "https://www.toggl.com/reports/api/v2/project/?page=1&user_agent=devteam@example.com&workspace_id=1&project_id=2"

我已经使用Postman尝试了以下HTTP请求,其中带有名为api_token的标头,其值为我的令牌:

https://www.toggl.com/reports/api/v2/project/?user_agent=MYEMAIL@EMAIL.COM&project_id=9001&workspace_id=9001

(当然已更改了id和电子邮件)。

如何在HTTP中使用CURL -u的任何帮助将不胜感激,谢谢。


5
在 Postman 中,选择基本身份验证,将用户名填写为 my-secret-toggl-api-token,将密码填写为 api_token。刷新标头,然后你就完成了。 - hlscalon
我已经完成了这个任务,而且我相信它已经生效了!现在我遇到了一个不同的错误,但我认为这是由于我在我们的Toggl团队中的权限问题,谢谢。 - Matt Brewerton
3个回答

35

简单的方法是将凭据添加到URL中,格式为user:pass@

https://my-secret-toggl-api-token:api_token@www.toggl.com/reports/api/v2/project/?page=...
        <---------------------------------->

或者,您可以像以下示例一样在 HTTP 标头中使用凭据:

Alternately you can use credential with your http header like below:


Authorization: Basic XXXXXX

这里XXXXXXbase64(my-secret-toggl-api-token:api_token)


我在Postman中使用基本授权,但返回了一个不同的错误,我现在认为这与我的Toggl访问权限有关。谢谢您的答案,非常有帮助! - Matt Brewerton
这里值得注意的是 :api_token 部分是必须精确匹配的字符串,例如 https://aaa111...bbb222:api_token@www.toggl.com/... - LomaxOnTheRun

0

如在另一篇帖子中所解释的那样,如果您使用 HttpWebRequest,则可以将 api 令牌传递给 user 属性:

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes($"my-secret-toggl-api-token:api_token")));

0

使用fetch

node环境中,您的请求可能如下所示:

const url = 'https://www.toggl.com/reports/api/v2/project/page=1&user_agent=devteam@example.com&workspace_id=1&project_id=2';
const token = 'my-secret-toggl-api-token:api_token';

fetch(url, {
  method: 'GET', // not required
  headers: {
    Authorization: `Basic ${Buffer.from(String(token)).toString('base64')}`,
  },
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接