2012-07-24 17 views
0

我試圖使用「invoke-webrequest」CMDLET來調用Web服務。 Im成功地使用WSDL服務的Apache Tomcat,但當我用它反對glassfish 2我得到:在invoke-webrequest中強制在powershell上使用UTF-8

---調用WebRequest:'「utf-8」'是不支持的編碼名稱。 -

我的請求在SOAP UI中工作得很好,但使用SOAP UI我發現Glassfish V2使用雙引號設置UTF-8編碼(參見上面的錯誤提示)。 Apache Tomcat做得很好,它給了我沒有雙引號的編碼。

你如何處理這個問題?有什麼辦法可以動態地刪除這些雙引號,或者可以在CMDLET調用期間完全替換這些編碼? 我可以在文檔中找到對此的任何參考。

謝謝!

回答

1

Invoke-WebRequest只是爲您設置一個普通的舊HTTP頭/正文請求。你確定你是使用所有正確的XML命名空間創建正確的包含頭部和正文的信封嗎?我並不是說你不能這樣做,但總的來說,使用New-WebServiceProxy可以更容易地爲服務創建一個針對WSDL的代理。

如果你還想去這樣,只是通過在哈希表中所有你想使用的標題,包括設置字符集例如一個:

Invoke-WebRequest ... -Headers @{Host = 'www.xxxx.xxx'; 
           Content-Type = 'application/soap+xml; charset=utf-8'; 
           Content-Length = <length>; 
           SOAPAction = 'http://www.w3.org/2003/05/soap-envelope; 
           ...} 
+0

我使用New-WebServiceProxy嘗試,但是我將一個問題分配給一個變量的問題很多,所以我換了檔。 我剛剛意識到我無法使用Invoke-Webrequest,因爲我沒有在主機服務器上安裝Powershell 3.0,所以我會回到New-WebServiceProxy。我會在另一個帖子上發表我的問題, – Dotty 2012-07-24 05:32:13