0

現時点ではtry-catch、Web サービスが呼び出し可能かどうかを判断するためにを使用しています。

try {
  WebServices::create($this->nameWS);
}
catch (Exception $e) {                      
  var_dump($e);     
}

現在、$e以下に示すように、配列を含むオブジェクトとともにエラー メッセージが含まれています。

注:一見ランダムに見える"のは、3 行目より下で、最後近くです。

取得しようとしている文字列を確認できると思います - コードに残したのはこれだけです - "GetMeService" ( の中["class"]=>にあり[3]ます)

object(SoapFault)#304 (8) {
  ["message:protected"]=>
  string(182) "SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost:8080/examplewsdl' : failed to load external entity "http://localhost:8080/examplewsdl"
"
  ["string:private"]=>
  string(0) ""
  ["code:protected"]=>
  int(0)
  ["file:protected"]=>
  string(71) ""
  ["line:protected"]=>
  int(87)
  ["trace:private"]=>
  array(8) {
    [0]=>
    array(6) {
      ["file"]=>
      string(71) ""
      ["line"]=>
      int(87)
      ["function"]=>
      string(10) ""
      ["class"]=>
      string(10) ""
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(2) {
        [0]=>
        string(49) ""
        [1]=>
        array(6) {
          ["trace"]=>
          bool(true)
          ["features"]=>
          int(1)
          ["login"]=>
          NULL
          ["password"]=>
          NULL
          ["proxy_host"]=>
          string(13) ""
          ["proxy_port"]=>
          int(80)
        }
      }
    }
    [1]=>
    array(6) {
      ["file"]=>
      string(71) ""
      ["line"]=>
      int(41)
      ["function"]=>
      string(15) ""
      ["class"]=>
      string(18) ""
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(2) {
        [0]=>
        &object(WebServices)#292 (1) {
          ["_instanceWSCache"]=>
          array(1) {
            ["eva"]=>
            array(2) {
              ["type"]=>
              string(4) "php5"
              ["params"]=>
              array(4) {
                ["proxyhost"]=>
                string(13) ""
                ["proxyport"]=>
                int(80)
                ["wsdl"]=>
                string(49) ""
                ["uri"]=>
                string(24) ""
              }
            }
          }
        }
        [1]=>
        string(7) ""
      }
    }
    [2]=>
    array(6) {
      ["file"]=>
      string(79) ""
      ["line"]=>
      int(22)
      ["function"]=>
      string(6) ""
      ["class"]=>
      string(18) ""
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        string(7) ""
      }
    }
    [3]=>
    array(6) {
      ["file"]=>
      string(82) ""
      ["line"]=>
      int(218)
      ["function"]=>
      string(6) ""
      ["class"]=>
      string(14) "GetMeService"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(0) {
      }
    }
  }
  ["faultstring"]=>
  string(182) "SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost:8080/examplewsdl' : failed to load external entity "http://localhost:8080/examplewsdl"
"
  ["faultcode"]=>
  string(4) "WSDL"
}  

var_dumpmyを (たとえば) に置き換えようとしてもvar_dump($e=>["trace:private"][3]["class"]);、その文字列にアクセスできません。出来ますか?

4

1 に答える 1

1

ドキュメントを参照してください。
クラス SoapFault は十分に文書化されています。
多くの方法があります。
トレースにアクセスするには、getTrace() メソッドを使用します。

http://php.net/manual/en/class.soapfault.php

試す :

try {
  WebServices::create($this->nameWS);
}
catch (Exception $e) {                      
  $tr = $e->getTrace();
  var_dump($tr[3]);     
}
于 2013-06-03T13:06:16.330 に答える