2

Webサービスクライアント(コードはIBM RAD 7.5によって生成された)からホストにSOAPメッセージを送信していますが、Webサービスに障害があり、ホストのログに「コンテンツはプロローグで許可されていません」と表示されます。SoapUIまたは単純なapacheHttpClientテストクライアントで同じコンテンツを送信すると、メッセージがホストによって受信および処理され、期待される応答が得られます。

私の知る限り、違いは送信されるHTTPヘッダーにあります。

RADで生成されたクライアント:

POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP / 1.1
ホスト:http://host.com/ws/mycompany/webservice/SomeWebServiceName/soap11
承認:application / soap + xml、multipart / related、text / *
ユーザーエージェント:IBM WebServices / 1.0
キャッシュ制御:キャッシュなし
プラグマ:キャッシュなし
SOAPAction: ""
接続:Keep-Alive
保存接続:7814631881345232300226
IBM-WAS-CLIENT:TRUE
コンテンツタイプ:マルチパート/関連; border = MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773; type = "application / xop + xml"; start = ""; start-info = "text / xml"
コンテンツ-長さ:2553
日付:2012年8月17日金曜日19:38:20 GMT

--MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773
コンテンツタイプ:application / xop + xml; charset = UTF-8; type = "text / xml"
コンテンツ転送エンコーディング:バイナリ
コンテンツID:

<soapenv:Envelope..。
--MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773--

SoapUIの場合:

POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP / 1.1
Accept-Encoding:gzip、deflate
コンテンツタイプ:text / xml; charset = UTF-8
SOAPAction: ""
コンテンツ-長さ:2732
ホスト:localhost:9111
接続:Keep-Alive
ユーザーエージェント:Apache-HttpClient / 4.1.1(java 1.5)

<soapenv:Envelope..。

そして、apacheHttpClientを使用して実装された非常に単純なクライアント:

POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP / 1.1
ユーザーエージェント:Jakarta Commons-HttpClient / 3.1
転送エンコーディング:チャンク
ホスト:localhost:9111

8da
<soapenv:Envelope..。
0

私の知る限り、これら3つの違いは、RADで生成されたクライアントによって生成された要求は、コンテンツタイプが「マルチパート」であり、MIME境界を定義していることです。ホストシステムにアクセスできませんが、ホストがマルチパートメッセージを処理できないようです。

IBMクライアントコードにSoapUIまたはHttpClientと同じくらい簡単にメッセージを送信させる方法はありますか?

4

1 に答える 1

1

trueBindingProviderでMTOMをに設定することに問題があったようです。

コードを次のように変更しました。

    SOAPBinding soapBinding = (SOAPBinding) bindProvider.getBinding();
    soapBinding.setMTOMEnabled(false);

そして、すべてがうまくいきました。MTOMが設定されtrueたのは、アプリケーション内の他のクライアントがMTOMを必要としていて、このコードが他のクライアントのコードに基づいているように見えるためだと思います。このWebサービス呼び出しは実際にはMTOMを必要としないため、オフにしても問題ありませんでした。

また、以下を参照してください:http: //pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.wsfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Ftwbs_enablemtom.html

于 2012-08-23T20:20:28.353 に答える