2017-02-22 249 views
0

這是我的REST呼叫(PUT)用的powershell版本2(使用.NET類System.Net.HttpWebRequest)休息呼叫

呼叫具有正文,這是一個XML文件,我可以在PowerShell版本3及以上版本中使用帶有屬性「Body」的invoke-WebRequest進行工作。但是我必須使用.net類來做這件事,因爲我們有一些PowerShell版本2系統。

下面是我的代碼

$psuri = "$restUri" 
[string]$psdata = Get-Content -path "$myfile.xml" 
[System.Net.HttpWebRequest]$global:ps = [System.Net.HttpWebRequest] [System.Net.WebRequest]::Create("$psuri"); 

$psbuffer = [System.Text.Encoding]::UTF8.GetBytes($psdata) 
$ps.ContentLength = $psdata.length 
$ps.ContentType = "application/xml" 
    [System.IO.Stream]$outputStream = [System.IO.Stream]$ps.GetRequestStream() 
    $outputStream.Write($psdata, 0, $psbuffer.Length) 




$ps.method = "PUT" 
$ps.Accept = "application/xml" 
$ps.AllowAutoRedirect = $false 
$ps.KeepAlive = $true 
$ps.CookieContainer = $CookieContainer 
$ps.PreAuthenticate = $true 

     #Try 
     #{ 

      [System.Net.HttpWebResponse]$psresponse = $ps.GetResponse() 

同樣的失敗,出現錯誤異常調用「GetRequestStream」和「0」的說法(S):「無法發送內容體與這個動詞型」在線:8 char:9

回答

0

好吧,所以我終於弄清楚了這一點。問題在於REST正在尋找XML數據,並且我轉換它的方式並不合適。這是我必須做的,以獲得內容(作爲原始數據)

$ psdata = Get-Content -path「$ myfile.xml」-aw