function getProxy()
    {
        $r       = rand();
        $evalStr = $this->_getProxyClassCode($r);
        //$this->debug("proxy class: $evalStr");
        if ($this->getError()) {
            $this->debug("Error from _getProxyClassCode, so return null");

            return NULL;
        }
        // eval the class
        eval($evalStr);
        // instantiate proxy object
        eval("\$proxy = new nusoap_proxy_$r('');");
        // transfer current wsdl data to the proxy thereby avoiding parsing the wsdl twice
        $proxy->endpointType     = 'wsdl';
        $proxy->wsdlFile         = $this->wsdlFile;
        $proxy->wsdl             = $this->wsdl;
        $proxy->operations       = $this->operations;
        $proxy->defaultRpcParams = $this->defaultRpcParams;
        // transfer other state
        $proxy->soap_defencoding     = $this->soap_defencoding;
        $proxy->username             = $this->username;
        $proxy->password             = $this->password;
        $proxy->authtype             = $this->authtype;
        $proxy->certRequest          = $this->certRequest;
        $proxy->requestHeaders       = $this->requestHeaders;
        $proxy->endpoint             = $this->endpoint;
        $proxy->forceEndpoint        = $this->forceEndpoint;
        $proxy->proxyhost            = $this->proxyhost;
        $proxy->proxyport            = $this->proxyport;
        $proxy->proxyusername        = $this->proxyusername;
        $proxy->proxypassword        = $this->proxypassword;
        $proxy->http_encoding        = $this->http_encoding;
        $proxy->timeout              = $this->timeout;
        $proxy->response_timeout     = $this->response_timeout;
        $proxy->persistentConnection = &$this->persistentConnection;
        $proxy->decode_utf8          = $this->decode_utf8;
        $proxy->curl_options         = $this->curl_options;
        $proxy->bindingType          = $this->bindingType;
        $proxy->use_curl             = $this->use_curl;

        return $proxy;
    }