0

我正在使用 WAMP 和 CakePHP,并尝试在混合中添加一个 NuSOAP 服务器。我可以通过 NuSOAP 生成一个动态 WSDL,但是在底部有一个由 NuSOAP 设置的参数,并且没有任何意义:

<soap:address location="http://localhost/cakephp/app/webroot/index.php"/>

正确的行是:

<soap:address location="http://localhost/cakephp/web_service/web_service"/>

我无法弄清楚如何更改它,甚至根本无法弄清楚 NuSOAP 在哪里获取该位置(我的代码中绝对没有引用它)。

这是我正在使用的代码:

    class WebServiceController extends AppController {
        var $components = array('RequestHandler');
        public function web_service()
        {
            $this->layout = FALSE;
            $this->autoRender = FALSE;
            Configure::write('debug', 0);
            $this->RequestHandler->respondAs('xml');
            App::import('Vendor', 'nusoap', array('file' => 'nusoap'.DS.'lib'.DS.'nusoap.php'));
            include 'local_functions.php';
            if ( !isset( $HTTP_RAW_POST_DATA ) ) $HTTP_RAW_POST_DATA =file_get_contents( 'php://input' );


            $server = new soap_server();
            $namespace = "http://localhost/web_service/web_service";
            $server->configureWSDL("web-service", $namespace);//, "urn:web-service");
            $server->wsdl->schemaTargetNamespace = $namespace;
            include 'wsdl_types.php';
            $server->register("Subscribe", array("accessKey" => "xsd:string","publisher" => "xsd:string","subscribeData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#Subscribe", "rpc", "encoded", "Subscribe to mail or mobile list(s)");
            $server->register("SendEmailFromWeb", array("accessKey" => "xsd:string","publisher" => "xsd:string","sendEmailFromWebData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#SendEmailFromWeb", "rpc", "encoded", "Send email from web interface");
            $server->register("SendEmailFromMobile", array("accessKey" => "xsd:string","publisher" => "xsd:string","sendEmailFromMobileData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#SendEmailFromMobile", "rpc", "encoded", "Send email from mobile interface");
            $server->register("UpdateProfile", array("accessKey" => "xsd:string","publisher" => "xsd:string","updateProfileData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#UpdateProfile", "rpc", "encoded", "Update subscriber profile (name, etc.)");
            $server->register("Unsubscribe", array("accessKey" => "xsd:string","publisher" => "xsd:string","unsubscribeData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#Unsubscribe", "rpc", "encoded", "Unsubscribe from mail or mobile list(s)");
            $server->register("SMSTriggeredEmailNotify", array("accessKey" => "xsd:string","publisher" => "xsd:string","smsTriggeredEmailNotifyData" => "xsd:string"), array("return" => "xsd:string"), "urn:web-service", "urn:web-service#SMSTriggeredEmailNotify", "rpc", "encoded", "Still working on this");
            $server->service($HTTP_RAW_POST_DATA);


        }
    }
4

1 回答 1

9

我找到了答案:

$server->configureWSDL("web-service", $namespace);

应该:

$endpoint = "http://localhost/web_service/web_service";
$server->configureWSDL("web-service", $namespace, $endpoint);
于 2012-07-24T21:01:40.280 回答