Проба с сервером apache - nusoap php - PullRequest
0 голосов
/ 05 октября 2011

При развертывании кода на сервере.Проблема с nusoap:

Код сервера:

    <?php
require_once('lib/nusoap.php');
// Create the server instance
$server = new soap_server();
$server->configureWSDL('WS_WITH_SMS',NS);
$server->wsdl->schemaTargetNamespace=NS;
// Register the method to expose

function hello($name) {

    return $name;
}

function process_name($function_name,$param)
{   
    if(function_exists($function_name)) 
    {   
        return $function_name($param);
    }
    else
        return 'ERROR_TRANSMISSION|'.ERROR_TRANSMISSION;
}
// Define the method as a PHP function

$server->register('process_name',array('function_name'=>'xsd:string','param'=>'xsd:string'),array('result'=>'xsd:string'),NS);

// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA :'';
$server->service($GLOBALS['HTTP_RAW_POST_DATA']);
?>

Код клиента:

require_once 'lib/nusoap.php';
$url_ws = 'http://server/testnusoap/server.php?wsdl';
$soapClient = new nusoapclient($url_ws,'wsdl');
$result = $soapClient->call('process_name',array('function_name'=>'hello','param'=>"<aa>" ));
var_dump($result);

=> клиент возврата данных "aa".

Данныевозврат удален "<" ">".Это беда.Пожалуйста, помогите!

1 Ответ

0 голосов
/ 05 октября 2011

Поскольку "<" и ">" используются в XML для обозначения полей, вы должны каким-то образом избегать их в вызове:

$result = $soapClient->call(
    'process_name',
    array(
        'function_name'=>'hello',
        'param'=>"\<aa\>"
    )
);

Примечание: я не проверял это, поэтому не могу гарантировать, что это правильно

...