我一直在嘗試與JIRA REST API進行交互(版本= 5.2 m06-4)使用REST API和PowerShell
我有一些代碼如下所示:
function ConvertTo-Base64($string) {
$bytes = [System.Text.Encoding]::UTF8.GetBytes($string);
$encoded = [System.Convert]::ToBase64String($bytes);
return $encoded;
}
$reqBody = [System.Text.Encoding]::UTF8.GetBytes($data)
try{
$authenticationDetails = ConvertTo-Base64 '$username:$password'
Write-Host('Opening a connection to {0}' -f $url)
$req = [System.Net.WebRequest]::Create($Url)
$req.Headers.Add("AUTHORIZATION", $headerValue);
$req.Method = "POST"
$req.ContentType = "application/json"
$req.Timeout = $Timeout.TotalMilliseconds
$req.Credentials = New-Object System.Net.NetworkCredential -ArgumentList $username, $password
$req.PreAuthenticate = $true
$req.ContentLength = $reqBody.Length
$reqStream = $req.GetRequestStream()
$reqStream.Write($reqBody, 0, $reqBody.Length)
$reqStream.Close()
Write-Host($data)
$resp = $req.GetResponse()
Write-Verbose $resp
Write-Output $resp.StatusCode
}
catch [System.Net.WebException]{
if ($_.Exception -ne $null -and $_.Exception.Response -ne $null) {
$errorResult = $_.Exception.Response.GetResponseStream()
$errorText = (New-Object System.IO.StreamReader($errorResult)).ReadToEnd()
Write-Warning "The remote server response: $errorText"
Write-Output $_.Exception.Response.StatusCode
Write-Host $_
} else {
throw $_
}
}
代碼通過JSON如下:
$ jsonString ='{「fields」:{「project」:{「key」:「CCB」},「components」:「'+ $ COMPONENT +'」} ,「customfield_11502」:「'+ $ DEPLOYMENT_DATE +'」,「Summary」:「'+ $ description +'」,「issuetype」:{「name」:「Configuration Change」}}}'
我遇到的問題是,當我以這種方式嘗試POST數據時,我被告知摘要,customfield_11502和組件不是屏幕的一部分。當我嘗試刪除JSON的這些屬性時,我被告知我無權發佈問題。
這裏有什麼正確的錯誤信息?是不是我沒有授權,如果是的話,屏幕上的字段不是真的有問題嗎?
當通過REST API傳遞用戶名和密碼時,我使用Base64編碼並將它傳遞給Headers。有什麼明顯的我缺少?
您的授權標頭值不應以'Basic'開始,然後是Base64編碼的用戶名:密碼值。 – codingbadger