【问题标题】:Forcing UTF-8 on powershell during invoke-webrequest在 invoke-webrequest 期间在 powershell 上强制使用 UTF-8
【发布时间】:2012-07-24 02:31:38
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: xml powershell encoding


    【解决方案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;
                                     ...}
    

    【讨论】:

    • 我尝试使用 New-WebServiceProxy,但在将结果分配给变量时遇到了很多问题,所以我换了个方向。我刚刚意识到我不能使用 Invoke-Webrequest,因为我在主机服务器上没有 Powershell 3.0,所以我将回到 New-WebServiceProxy。我将在另一个线程上发布我的问题,
    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多