Rest 对Wiki页面执行PUT请求时清空正文内容
我正在尝试动态更新Azure DevOps Wiki页面,每当向存储库引入更改时,页面顶部都会显示最新的提交。 当我尝试将提交历史记录放入Wiki页面时,正文中的内容字段为空 请求通过Powershell完成,如下所示:Rest 对Wiki页面执行PUT请求时清空正文内容,rest,azure,powershell,azure-devops,Rest,Azure,Powershell,Azure Devops,我正在尝试动态更新Azure DevOps Wiki页面,每当向存储库引入更改时,页面顶部都会显示最新的提交。 当我尝试将提交历史记录放入Wiki页面时,正文中的内容字段为空 请求通过Powershell完成,如下所示: function postToWiki($Commits) { $wikiUrl = "https://dev.azure.com/$organization/$project/_apis/wiki/wikis/Ekonomiredovisning.wiki/pag
function postToWiki($Commits) {
$wikiUrl = "https://dev.azure.com/$organization/$project/_apis/wiki/wikis/Ekonomiredovisning.wiki/pages?path=MyWikiPage&api-version=5.0"
$Etag = getWikiPageVersion
$headers = @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN";
'If-Match' = $Etag}
$body = @{ content = $Commits }
$json = $body | ConvertTo-Json
Invoke-WebRequest -Uri $wikiUrl -Headers $headers -Body $json -ContentType "application/json" -Method Put
}
其他有用的信息:
- 当我发送更简单的字符串,如“Hello”时,它就会工作
- 根据,发送的JSON是有效的
- $Commit变量相当大,最多可以有6000行
- 我今天也有同样的问题。我的正文包含特殊的HTML字符,这些字符不会在请求中转义
试着逃离特殊的咒语(è…)。
在PowerShell中,可以使用以下程序集:
Add-Type -AssemblyName System.Web
$encodedBody = [System.Web.HttpUtility]::HtmlEncode($Commits)
结果:
# Construct the wiki REST URI
# $uri = $WikiUri +$WikiPath + $($contentPackage.version)
$uri = "$($env:WikiUri)$($contentPackage)&api-version=5.0"
# Encode and convert to json
Add-Type -AssemblyName System.Web
$encodedContent = [System.Web.HttpUtility]::HtmlEncode($content)
$data = @{ Content=$encodedContent; } | ConvertTo-Json;
# Set Request
$params = @{uri = "$($uri)";
Method = 'PUT';
Headers = $header;
ContentType = "application/json";
Body = $data;
}
# Call
Invoke-WebRequest @params
我试图做一些类似的事情,在维基上获取一个页面的内容。有一个名为includeContent的标志,它自动默认为false,需要为true 我的休息电话从 到
这对我不起作用。我得到了同样的空内容。显然还有其他原因。这是个问题吗?还是你在回答这个问题?请澄清。我想你实际上是想回答,但你的措辞我听不懂。。。。你能写一些像“像这样做……将通过……解决问题,因为……”这样的话吗