2

PHP SoapServer から SoapFault を返そうとしていますが、適切な形式の応答を作成することに固執しています。

例外を処理するとき、私は以下を返します:

$detail = "message";
return new SoapFault("Client", "ValidationException", null, $detail, "ValidationException");

応答は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Client</faultcode>
      <faultstring>ValidationException</faultstring>
      <detail>
        <ValidationException>
          <message>message</message>
        </ValidationException>
      </detail>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ただし、応答を次のようにしたいと思います。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Client</faultcode>
      <faultstring>ValidationException</faultstring>
      <detail>
        <ns2:ValidationException xmlns:ns2="http://service.applicationsnet.com/soap/">
          <message>message</message>
        </ns2:ValidationException>
      </detail>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

私はいくつかのことを試しましたが、うまくいきませんでした。手伝ってくれませんか?

名前空間に関するもう 1 つのことですが、"SOAP-ENV" エンベロープの名前空間を変更することは可能ですか? ありがとう。

4

1 に答える 1

0

それがまだ関連しているかどうかはわかりませんが、適切なsoapfaultタイプをwsdlで定義する必要があるようなsoapfaultを定義するには。

あなたのwsdlを取り、その中にsoapFaultでこのような操作を書きます

<wsdl:operation name="TransferFundsRequest">
    <wsdl:input name="request" message="tns:TransferFundsRequest" />
    <wsdl:output name="response" message="tns:TransferFundsResponse" />
    <wsdl:fault name="fault" message="tns:ExceptionType" />
</wsdl:operation>`

障害の種類はどこですか

<xsd:complexType name="ExceptionType">
    <xsd:sequence>
        <xsd:element name="Code" type="xsd:integer" />
        <xsd:element name="Message" type="xsd:string" />
    </xsd:sequence>
</xsd:complexType>
于 2014-10-09T16:32:15.340 に答える