SOAPUIのサンプル入力を使用してWCFサービスをテストしています。実行すると、SOAP以下のような例外が発生します。
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/fault</a:Action>
</s:Header>
<s:Body>
<s:Fault>
<s:Code>
<s:Value>s:Sender</s:Value>
<s:Subcode>
<s:Value>a:ActionMismatch</s:Value>
</s:Subcode>
</s:Code>
<s:Reason>
<s:Text xml:lang="en-US">The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://XXX.XX.XXXX/IXXXXXX/AddOrderInfromation'.</s:Text>
</s:Reason>
<s:Detail>
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s:Detail>
</s:Fault>
</s:Body>
</s:Envelope>
ブログでは、Soap Actionの追加を求めています。以下のリクエストにSOAPアクションを追加する方法:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wkus="http://XXX.XX.XXXX/IXXXXXX">
<soap:Header />
<soap:Body>
<ns1:AddOrderInfromation>
<!--Optional:-->
<ns1:inputsting>
<ns1:AddOrderInfromation>
<ns1:OrderNo>4500146</ns1:OrderNo>
<ns1:OrderDate>08/22/2014</ns1:OrderDate>
<ns1:TotalItems>1</ns1:TotalItems>
</ns1:AddOrderInfromation>
</ns1:inputsting>
</ns1:AddOrderInfromation>
提案してください。前もって感謝します
これはおそらくWS-Aのアドレス指定の問題です。
リクエストの[WS-A]タブで、[WS-Aアドレッシングを有効にする]をオンにします。また、「デフォルトを追加:To」をチェックする必要がある場合もあります。
WebサービスがSOAPFaultを返しています。これは、WebサービスがSOAPアクションのHTTPヘッダーを期待していることを示しています。 SOAPUIからのSOAPリクエストにSOAPアクションを追加するには、SOAPAction
という名前のhttpヘッダーを追加する必要があります。これを行うには、次の手順を実行します。
Header(0)
、Attachments(0)
...)があり、Header(0)
タブを開きます。次に、+
追加ボタン、SOAPAction
の名前と値を含むヘッダーを追加します。お役に立てれば、
このエラーは、xmlリクエストの構文が不適切なためにも発生します
例:終了タグがない場合、同じエラーをスローします
</soap:Body>
</soap:Envelope>
以下のコードで
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wkus="http://XXX.XX.XXXX/IXXXXXX">
<soap:Header />
<soap:Body>
<ns1:AddOrderInfromation>
<ns1:inputsting>
<ns1:AddOrderInfromation>
<ns1:OrderNo>4500146</ns1:OrderNo>
<ns1:OrderDate>08/22/2014</ns1:OrderDate>
<ns1:TotalItems>1</ns1:TotalItems>
</ns1:AddOrderInfromation>
</ns1:inputsting>
</ns1:AddOrderInfromation>
または、このような予期しない構文がある場合
<ns1:OrderNo>4500146**<ns1:OrderNo>**
の代わりに
<ns1:OrderNo>4500146**</ns1:OrderNo>**
またはこれ
<ns1:**OrderNo**4500146</ns1:OrderNo>
の代わりに
<ns1:**OrderNo>**4500146</ns1:OrderNo>
私にもこの問題があり、SoapUIでWS-Aアドレス指定を有効にすることで解決しました。 SoapUIからのスクリーンショット