1

長い間うまく機能していたPHPWebサービスを入手しましたが、どこかでそれが機能しなくなり、再び機能させることができなくなりました。

関数を使用してクラスを定義するだけのphpページを取得し、最後にSoapServerを作成します。

このように見えます-

class MyClassWS
{
     function .....
     function ....
}
ini_set("soap.wsdl_cache_enabled", "0");
    error_log("Server after ini_set");
    $soapserver = new SoapServer("MyWSDL.wsdl");

    error_log("Server after new SoapServer");
$soapserver->setClass("MyClassWS");
    error_log("Server after setClass");
    //error_log(print_r($soapserver->getFunctions()));

    try
    {
        $soapserver->handle();
    }
    catch(Exception $ex)
    {
        error_log("Exception!".$ex->getMessage());

    }
error_log("Finished Handling",0);

$ soapserver-> handle();の直後 コードが終了し、Webページにあいまいな「SOAP-ENV:ClientBadRequest」の結果が表示されます。

これは、インデックスページからこのページを「require_once」すると発生するため、インデックスページからこのクラスで定義されている関数を呼び出すことができます。

私の推測では、WSDLをいじりすぎていて、WebServiceの実行中にどういうわけか失敗したのかもしれませんが、何が問題なのかを調べてみましたが、何もできませんでした。特に、この厄介な漠然としたエラーメッセージのために、それは実際には役に立ちません。

ありがとう!

4

1 に答える 1

1

SoapServerを含むWebServiceクラスを2つの異なるクラスに分割することで、うまく修正できたと思います。

1つは関数を含むクラスのみを含み、もう1つはWebServerを含み、クラスへの参照のみを含みます。

このようにして、SoapServerをインポートしてhandle()関数をトリガーすることなく、関数を含むクラスをインポートできます。

于 2011-06-04T08:57:27.683 に答える