0

我正在尝试使用“invoke-webrequest”CMDLET 来调用 Web 服务。我成功地将它与 apache tomcat 提供的 WSDL 一起使用,但是当我对 glassfish 2 使用它时,我得到:

---Invoke-WebRequest : '"utf-8"' 不是受支持的编码名称。---

我的请求在 SOAP UI 中工作得很好,但是使用 SOAP UI 我意识到 Glassfish V2 正在使用双引号设置 UTF-8 编码(请参阅上面的错误并为您提供线索)。Apache Tomcat 做得很好,它给了我没有双引号的编码。

你如何处理这个问题?有什么方法可以动态删除这些双引号,或者在 CMDLET 调用期间完全替换编码?我可以在文档中找到对此的任何参考。

谢谢!

4

1 回答 1

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;
                                 ...}
于 2012-07-24T05:08:21.923 回答