почему вызов API не работает в teamcity - PullRequest
4 голосов
/ 11 марта 2019

Я создал скрипт powershell для вызова остальных API.В сценарии powershell я вызываю методы post, get и put.Скрипт прекрасно работает на моей машине, а также работает, если я запускаю скрипт powershell непосредственно на машине агента сборки.Но если я создам шаг сборки в team city и вызову .ps1 (файл powershell), методы POST и GET работают, но метод PUT не работает.Сбой сборки с ошибкой:

"Invoke-RestMethod: {" code ": 404," errors ": [{}]}"

Я использовал синтаксис нижедля вызова PUT API

Invoke-RestMethod -Uri $memberEditUrl -Method Put -Body $memberEditBody -ContentType "application/json"

Я зарегистрировал эту команду, используя Write-Host, и после запуска сборки я зашел в журнал сборки и нажал на URL зарегистрированного API и вызвал в браузере, и он работает.

Это только командный город, где это не работает.

В чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Старайтесь не преобразовывать косую черту "/" и двоеточие ":", которые я заменяю на% 2F и% 3A. Поместите api в одинарные или двойные кавычки "http://asd.com/abc:1234" пример для демонстрации

    $person = @{
    first='joe'
    lastname='doe'
}
$json = $person | ConvertTo-Json
$response = Invoke-RestMethod 'http://example.com/api/people/1' -Method Put -Body $json -ContentType 'application/json'
0 голосов
/ 28 марта 2019

Моя проблема была решена заменой слэша ("/") на тильду "~" для значения параметра. Без изменений для двоеточия ":", и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...