Доступ к Asana API с помощью Powershell

Я пробовал следить за сообщением, чтобы получить доступ к asana api, найденному здесь Доступ к ASANA через Windows PowerShell с помощью APIKEY. Ниже приведен код, который я использую, и полученное мной сообщение об ошибке:

$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 

и получите следующую ошибку:

Исключение, вызывающее «GetResponse» с аргументом (ами) «0»: «Время ожидания операции истекло» В строке: 26 символов: 1 + $ response = $ request.GetResponse () + ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: WebException


person Sean C.    schedule 04.08.2015    source источник
comment
Заголовок url ​​и auth мне нравится. Даже если вы сделали неверный запрос, у вас не должно быть тайм-аута. Я не знаком с PowerShell - нужно ли вам делать что-то особенное, чтобы делать HTTPS-запросы? Еще одна вещь, которую следует попробовать, - это другой запрос, т.е. попробовать /users/me вместо /users и посмотреть, не истечет ли время ожидания.   -  person Greg S    schedule 04.08.2015
comment
Я согласен с @GregS. Пока все выглядит хорошо, и тайм-аут означает именно это; никакого ответа. Это не типично для правильно работающего веб-приложения. Для HTTPS ничего особенного не требуется, если только сертификат не имеет проблем (истек срок действия, несоответствие хоста / CN и т. Д.). Я не знаю, какую версию PowerShell вы используете, но вы можете использовать Invoke-WebRequest или Invoke-RestMethod в PowerShell 3 и выше. Их немного проще использовать, чем [System.Net.WebRequest], но я сомневаюсь, что это поможет в решении вашей проблемы.   -  person briantist    schedule 04.08.2015
comment
Спасибо, я пробовал Invoke-RestMethod, а также Invoke-WebRequest без особой удачи. Я все еще получаю ту же ошибку, что и раньше.   -  person Sean C.    schedule 04.08.2015


Ответы (2)


Попробуйте другой запрос - существует известная проблема с запросами Asana API, которые пересекают границы рабочей области / организации, где они могут пересекать слишком много данных и тайм-аут (они сегментированы, и нет возможности эффективно разбивать их на страницы, поэтому мы планируем отказаться от них) .

Конечная точка /users без каких-либо параметров будет получать всех пользователей во всех рабочих областях, в которых вы находитесь, и может иметь эту проблему. Более простой вызов, такой как /users/me или /tasks/KNOWN-TASK-ID, скажет вам, правильно ли вы поняли основы или нет.

person Greg S    schedule 04.08.2015
comment
Спасибо за помощь в устранении этой проблемы. Я изменил URL-адрес на app.asana.com/api/1.0/users/me и по-прежнему получать то же сообщение об ошибке о времени ожидания операции при вызове GetResponse с 0 аргументами. - person Sean C.; 05.08.2015
comment
Ok. Тогда я уверен, что это какая-то ошибка настройки запроса или подключения, а не проблема с API или службой. Можете ли вы использовать curl для отправки запросов вручную? Есть много вещей, которые могут пойти не так между вашей библиотекой и серверами Asana, похоже, вам придется продолжать экспериментировать с вещами, чтобы сузить круг проблем. - person Greg S; 05.08.2015
comment
Итак, я выполнил curl https://app.asana.com/api/1.0/users/me, и время операции истекло. Я ожидал, что это не удастся из-за аутентификации, но просто истекло время ожидания. - person Sean C.; 05.08.2015
comment
На этом этапе вам нужно будет выполнить какое-то устранение неполадок в сети, чтобы определить, почему вы не можете связаться с сервером Asana. Нет ничего, что указывало бы на то, что ваша проблема связана с асанами или API. Если вы не знаете, как устранить неполадки отсюда, возможно, в Интернете есть дополнительные ресурсы, но это очень полезная / важная вещь, которую следует изучить как веб-разработчик. Удачи! - person Greg S; 05.08.2015

В итоге я просто использовал GOW для запуска команды curl. Причина, по которой мой cURL изначально не работал, была из-за сертификата ssl. Я просто добавил переключатель --insecure, и проблема была решена. Вот последний фрагмент кода для всех, кто ищет:

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