SoapUI에서 WSDL 스키마가 아닌 PHP soapfault?
-
20-09-2019 - |
문제
나는 오늘 이상한 것을 발견했다. 그것은 다음과 같이 간다 :
PHP5로 작성된 저의 웹 서비스를위한 테스트 스위트를 설정하고 있습니다. SOAPFAULT 무엇보다도.
클래스를 사용하여 클라이언트에 오류 메시지를 반환합니다. 예시:
if (!$this->CheckHost(getenv('REMOTE_ADDR')))
{
return new SoapFault(S_CLIENT, S_STRING_IP, "", S_DETAIL_IP);
}
클라이언트가 승인되지 않은 경우 Soapfault 반환 ...
이제 스키마 준수 어설 션을 추가하면 SOAPUI 3.0.1 반환 된 메시지가 WSDL 파일을 준수하지 않는다는 것을 알려줍니다.
WSDL-File은 나에 의해 작성되었으며 실제 Soapfault 클래스에 대한 설명이 포함되어 있지 않습니다. 필요할까요? Soapfault가 Soap 1.1에서 spezified 되었기 때문에 생각하지 않습니다.
실제 응답은 다음과 같습니다.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>ERR_102</faultstring>
<faultactor/>
<detail>IP error message</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
soapui 오류 메시지는 다음과 같습니다.
요소 전용 콘텐츠 유형의 요소 '세부 사항'에는 텍스트 내용이 없습니다.
누구든지 내가 잘못하고있는 일을 힌트가 있습니까?
티아
케이
해결책
SOAP 1.1 XML 스키마 (http://schemas.xmlsoap.org/soap/envelope/) 세부 요소를 다음과 같이 정의합니다
<xs:complexType name="detail"><xs:sequence>
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax" />
</xs:complexType>
당신의 잘못과 같이 텍스트 만 포함 할 수 없음을 의미합니다. 응답을 같은 것으로 변경하십시오
...
<detail><msg>IP error message</msg></detail>
...
도움이 되었기를 바랍니다!
문안 인사,
/Ole eviware.com
제휴하지 않습니다 StackOverflow