【问题标题】:Accessing Asana API with Powershell使用 Powershell 访问 Asana API
【发布时间】:2015-08-04 01:11:41
【问题描述】:

我尝试按照帖子访问 Access ASANA via windows powershell using APIKEY 此处找到的 asana api。以下是我正在使用的代码和收到的错误消息:

$apikey="******.***************"
#Add colon
$authinfo=$apikey+":";
$string1 = $authinfo
Write-Host $string1  -ForeGroundColor Green

#Encoding format
$enc = [system.Text.Encoding]::UTF8

#get bytes
$data1 = $enc.GetBytes($string1) 

#convert to 64 bit
$mykey=[System.Convert]::ToBase64String($data1)

Write-Host $mykey -ForeGroundColor Green


$url="https://app.asana.com/api/1.0/users"
$request = [System.Net.WebRequest]::Create($url)
$authorization = "Authorization: Basic " + $myKey
Write-Host $authorization -ForeGroundColor Green

$request.Headers.Add($authorization)
#$request.Headers.Add("Authorization: BASIC $mykey")
$response = $request.GetResponse()
Write-Host $Response  -ForeGroundColor Green 

并收到以下错误:

使用“0”参数调用“GetResponse”的异常:“操作已超时” 在行:26 字符:1 + $response = $request.GetResponse() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : WebException

【问题讨论】:

  • url 和 auth 标头对我来说看起来不错。即使您提出了错误的请求,也不应该超时。我对 powershell 不熟悉 - 你必须做一些特别的事情来发出 HTTPS 请求吗?要尝试的另一件事是不同的请求,即尝试/users/me 而不是/users,看看它是否也超时。
  • 我同意@GregS。到目前为止看起来不错,超时就意味着;完全没有反应。这不是正常工作的 Web 应用程序的典型特征。除非证书有问题(过期、主机/CN 不匹配等),否则 HTTPS 不需要什么特别的东西。我不知道您使用的是哪个版本的 PowerShell,但您可以在 PowerShell 3 及更高版本中使用 Invoke-WebRequestInvoke-RestMethod。它们比[System.Net.WebRequest] 更容易使用,但我怀疑它是否有助于解决您的问题。
  • 谢谢,我试过Invoke-RestMethodInvoke-WebRequest 没有任何额外的运气。我仍然收到与以前相同的错误。

标签: powershell asana


【解决方案1】:

尝试不同的请求 - Asana API 请求存在一个已知问题,这些请求跨越工作空间/组织边界,它们可能会遍历过多数据和超时(它们是分片的,无法有效地对它们进行分页,因此我们计划弃用它们)。

不带任何参数的/users 端点将获取您所在的所有工作区中的所有用户,并且可能会遇到此问题。像/users/me/tasks/KNOWN-TASK-ID 这样更简单的调用会告诉您您是否掌握了基本知识。

【讨论】:

  • 感谢您帮助解决此问题。我将 URL 更改为 app.asana.com/api/1.0/users/me,但在使用 0 个参数调用 GetResponse 时仍然收到有关操作超时的相同错误消息。
  • 好的。然后我更确定这是某种请求设置或连接错误,而不是 API 或服务的问题。您可以使用curl 手动发出请求吗?您的图书馆和 Asana 服务器之间可能出现很多问题,听起来您必须不断尝试以缩小问题所在。
  • 所以我运行了curl https://app.asana.com/api/1.0/users/me,操作超时。我原以为它会因身份验证而失败,但它只是超时了。
  • 此时您需要进行某种网络故障排除以确定您无法访问 Asana 服务器的原因。没有任何迹象表明您的问题具有特定于 Asana 或 API 的性质。如果您不确定如何从这里进行故障排除,网络上可能还有更多资源,但这是作为网络开发人员学习的非常有用/重要的事情。祝你好运!
【解决方案2】:

我最终只使用 GOW 来运行 curl 命令。我的 cURL 最初失败的原因是 ssl 证书。我只是添加了 --insecure 开关,就解决了这个问题。这是其他人看的最后一段代码:

$api_key = "********.******************"
$command = CMD /C "curl --insecure --user ${api_key}: https://app.asana.com/api/1.0/users"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 2020-07-30
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多