пытается сделать вызов Rest (PUT) с powershell - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь изменить код курса через холст API.Я могу заставить его работать в bash на примере, который дает

curl -X PUT -H 'Authorization: Bearer w3KhVblthisisnottoken5LmhlnUorFM8NJMh0' \
https://school.test.instructure.com/api/v1/courses/9066 \
-d 'course[course_code]=holla!' \
-v

Я пытаюсь воспроизвести это в powershell.Вызов проходит, но он ничего не делает!

function Update-CanvasCourseName(
[Parameter(Mandatory = $true)][string] $CourseId, 
[Parameter(Mandatory = $true)][object] $header, 
[Parameter(Mandatory = $true)][string] $url,
[Parameter(Mandatory = $true)][string] $name
){
    $uri = "$url$CourseId"
    $body = @{"course[course_code]" = $name}
    Invoke-WebRequest -Headers $header -Body $body -Method put  -Uri $uri

}
$header  = @{"Authorization"="Bearer $(C:\PowerShells\decryptText.ps1 -FilePath C:\Credentials\canvasapi.txt)"}
$course = 9066
$url = "https://holyfamily.test.instructure.com/api/v1/courses/"
Update-CanvasCourseName -CourseId $course -header $header -url $url -name "please work"

Кто-нибудь имел эту проблему раньше?Есть ли в моем коде что-то, что я делаю неправильно?Я не могу воспроизвести то, что я могу сделать в curl.


Решено!

Проблема заключалась в том, что я использовал неправильный тип содержимого.Для Canvas LMS необходимо выбрать multipart / form-data при выполнении вызова PUT.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Проблема заключалась в том, что я использовал неправильный тип контента.Для Canvas LMS необходимо выбрать multipart / form-data при выполнении вызова PUT.

0 голосов
/ 15 октября 2018

При условии, что Canvas имеет интерфейс REST, командлет Invoke-RestMethod может быть более подходящим для этого, чем Invoke-WebRequest.

Как я помню, Invoke-WebRequest предназначен для веб-страниц и включает функции для работы с ответами HTML, он возвращает объект, который в некотором роде наклонен таким образом, в то время как Invoke-RestMethod предназначен для веб-API,и обрабатывает ответ по-разному.Эта альтернативная обработка ответа может быть полезна для выяснения того, что происходит для вас.

Подробнее см., Например, https://www.systemcenterautomation.com/2018/05/invoke-restmethod-vs-invoke-webrequest/

...