【发布时间】:2019-03-29 00:56:39
【问题描述】:
我创建了一个 powershell 脚本来调用 rest API。在 powershell 脚本中,我调用 post、get 和 put 方法。脚本在我的机器上工作正常,如果我直接在构建代理机器上运行 powershell 脚本也可以工作。 但是,如果我在团队城市中创建一个构建步骤并调用 .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 记录了这个命令,在构建运行之后我去构建日志并单击记录的 API URL 并在浏览器中调用它并且它正在工作。
这是唯一不起作用的团队城市。
可能是什么问题?
【问题讨论】:
-
浏览器默认使用GET方法,而你使用的是PUT...
-
@daggett 我错过了有问题的提及。我意识到这一点,后来尝试使用 POSTMAN 的 PUT 方法使用相同的 url。这是工作。仅在团队城市中,这会导致问题。
-
然后 404 - 未找到。检查你的网址。
-
@daggett 我从 POSTMAN 的团队城市日志中复制了 url,并在正文中提供了 JSON 数据。这就是我无法弄清楚的地方,如果 URL 错误,它不应该在 POSTMAN 中工作,因为我正在处理来自 teamcity 日志的 url
-
如果我的 API 在 URL 中需要一个参数,该参数是一个字符串,并且该字符串具有正斜杠“/”和冒号“:”,我将用 %2F 和 %3A 替换它们,因为提供 API Invoke-RestMethod 中的 URl
标签: powershell teamcity