2011-12-15 15 views
0

SAP PI Webサービスに対してSOAPリクエストを行います。そのようなこのサービスリターンSOAPフォールトは:PHP SOAPがSAP PI/XI SOAPフォルトをキャッチしない

$client = new SoapClient('path/to/wsdl', array(
      'cache_wsdl' => WSDL_CACHE_NONE, 
      'exceptions' => true, 
      'login' => 'some_login', 
      'password' => 'some_password', 
     )); 
$result = $client->some_funtion("bla-bla-bla"); 
var_dump($result); 

、それはヌルを印刷しますが、私の出力と同じXML(場合を除い

Thowさんなければならない:PHPで

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> 
     <SOAP:Body> 
      <SOAP:Fault> 
      <faultcode>SOAP:Server</faultcode> 
      <faultstring>Server Error</faultstring> 
      <detail> 
       <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0"> 
        <context>XIAdapter</context> 
        <code>ADAPTER.JAVA_EXCEPTION</code> 
        <text>com.sap.aii.af.service.cpa.CPAObjectNotFoundException: Couldn't retrieve binding for the given channelId: Binding:CID=null; 
     at com.sap.aii.af.service.cpa.impl.lookup.AbstractLookupManager.getBindingByChannelId(AbstractLookupManager.java:173) 
     at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:449) 
     .... 
     at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:327)</text> 
       </s:SystemError> 
      </detail> 
      </SOAP:Fault> 
     </SOAP:Body> 
</SOAP:Envelope> 

は私が従ってください私の自身のウェブサービスで私はそれを大丈夫キャッチします。

答えて

0

はこれを試してみてください。このタグを追加して問題を解決しました。

<wsdl:portType name="..."> 
    <wsdl:operation name="..."> 
     ... 
     <wsdl:input message="..."/> 
     <wsdl:output message="..."/> <!--- that tag--> 
    </wsdl:operation> 
</wsdl:portType> 
0

これは、try/catchブロックがないためです。問題は、WSDLで出力タグにあった

$client = new SoapClient('path/to/wsdl', array(
      'cache_wsdl' => WSDL_CACHE_NONE, 
      'exceptions' => true, 
      'login' => 'some_login', 
      'password' => 'some_password', 
     )); 

try{ 
    $result = $client->some_funtion("bla-bla-bla"); 
} catch (SoapFault $e){ 
    exit('caught soap fault'); 
} 
+0

いいえ、問題はありません。試してみてください。例外は、PHPのSOAPクライアントをスローする必要がありますが、それは起こらない –