0

Web サービスの呼び出しに「invoke-webrequest」CMDLET を使用しようとしています。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 に答える