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と同じくらい簡単にメッセージを送信させる方法はありますか?