3

この SoapFault がわかりません。以下の関数 codewordStemExists() を呼び出すと、稼働中の SoapServer に接続する SoapClient が作成されます (サーバー側から報告されたエラーはありません)。

private static function initClient() {
    ini_set("soap.wsdl_cache_enabled", "0");
    $classmap = array(
        'CodewordStemExists' => 'CodewordStemExists',
        'CodewordStemExistsResponse' => 'CodewordStemExistsResponse',
    );
    $client = new \SoapClient("http://..../service.wsdl", array(
        "trace" => true,
        "exceptions" => true,
        "classmap" => $classmap
    ));
    return $client;
}

public static function codewordStemExists($stem) {
    $client = self::initClient();
    try {
        $req = new CodewordStemExists();
        $req->username = "....";
        $req->password = "....";
        $req->codewordStem = $stem;

        $res = $client->codewordStemExists($req);
        return (bool)$res->result;
    }
    catch (\SoapFault $e) {
        var_dump($client->__getLastResponse());

}

/** The result from var_dump: */
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://....">
<SOAP-ENV:Body>
    <ns1:CodewordStemExistsResponse><ns1:result>false</ns1:result>
    </ns1:CodewordStemExistsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SoapFault:

Class 'CodewordStemExistsResponse' not found

CodewordStemExistsResponse はブートストラップ時に必要で、いつでもインスタンス化できます。

これを前に見た人はいますか?ありがとう。

4

1 に答える 1

3

これに適切な名前空間が必要かどうかを確認してください\vendor\CodewordStemExistsResponse

于 2012-05-08T12:32:26.753 に答える