2013-10-26 10 views
2

PHP SoapServer에서 SoapFault를 반환하려고하지만 올바른 응답 형식을 만드는 데 어려움이 있습니다.PHP 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> 

여러 가지 시도를했지만 실패했습니다. 저를 도와주세요?

네임 스페이스가있는 또 다른 사항은 "SOAP-ENV"봉투 네임 스페이스를 변경할 수 있습니까? 감사.

+0

이고 그 안에이

<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>' 

같은 SOAPFault에 함께 작업을 쓰기? 이름을 "ENV-SOAP"또는 "ENVELOPE"또는 기타 뭐라고할까요? – hakre

+0

가능한지 (PHP *도 SOAP도 아님), PHP 매뉴얼 페이지는 http://php.net/soapfault.soapfault를 참고하십시오. – hakre

+0

그래, 내가 그 페이지에 대해 알고있다. 나는 SoapServer 클래스를 확장하고 각 응답을 보내기 전에 부분 문자열을 변경함으로써 "SOAP-ENV"접두어를 변경할 수있다. 그러나 내가 물었던 주된 질문은 SoapFault의 "ns2"네임 스페이스에 관한 것이었다. . 생각에 감사드립니다. –

답변

0

여전히 관련성이 있는지 모르겠지만 원하는대로 soapfault를 정의하려면 soapfault 유형을 wsdl에 정의해야합니다.

당신의 WSDL을 타고 오류 유형 당신은 접두사 "SOAP-ENV"을 의미

<xsd:complexType name="ExceptionType"> 
    <xsd:sequence> 
     <xsd:element name="Code" type="xsd:integer" /> 
     <xsd:element name="Message" type="xsd:string" /> 
    </xsd:sequence> 
</xsd:complexType> 
+0

답을 몇 문장으로 나누거나 일부 코드를 표시하는 것과 같이 좀 더 명확하게 만들 수 있습니까? – matsjoyce