I wszytko bylo by ladnie i pieknie gdyby nie pewien blad (?).
Mamy taki testowy kod. Klient:
[php:1:d1a0c06c8c]<html>
<head>
<title>test</title>
</head>
<body>
<?php
require_once( 'rpc/xmlrpc.class.php' );
$blnDebugOn = true; // Wlaczenie/wylaczenie debugowania
$rpcClient = new xmlrpc_client( '/webserv/server.php', 'localhost', 80 );
//$rpcClient->setCredentials( 'test', 'dupa' ); // Autoryzacja
$rpcClient->setDebug( $blnDebugOn ); // Debugowanie
$myVal = new xmlrpcval();
$myVal->addScalar( 'TestRPC' ); // Tworzenie wartosci
$rpcMsg = new xmlrpcmsg( 'test.testrpc',
array( $myVal ) ); // Wiadomosc dla servicu
$rpcResponse = $rpcClient->send( $rpcMsg, 3, 'http' ); // Wysylanie wiadomosci
if ( !$rpcResponse->faultCode() ) // Sprawdzanie poprawnosci wyniku
{
// $arrValResponse = xmlrpc_decode( $rpcResponse );
// print "Wynik: ".$arrValResponse['Wynik'];
}
else
{
print 'Blad <br />';
print "Numer: ".$rpcResponse->faultCode().
"<br />Wiadomosc: ".$rpcResponse->faultString()."<br />";
}
?>
</body>
</html>[/php:1:d1a0c06c8c]
...i serwer:
[php:1:d1a0c06c8c]<?php
require_once( 'rpc/xmlrpc.class.php' );
require_once( 'rpc/xmlrpcs.class.php' );
$myDispMap = array( 'test.testrpc' =>
array( 'function' => 'testrpc',
'signature' => array( array( $xmlrpcString, $xmlrpcString ) ),
'docstring' => 'Testowa server rpc' ) );
$rpcServer = new xmlrpc_server( $myDispMap );
//print_r( $rpcServer );
/* if ( $_SERVER['PHP_AUTH_USER'] == 'test' && $_SERVER['PHP_AUTH_PW'] == 'dupa' )
{
// $rpcServer->service();
}
else
{
} */
function testrpc( $params )
{
global $xmlrpcerruser;
$test = $params->getParam(0);
if ( $test->scalarval() == 'TestRPC' )
{
return new xmlrpcresp( new xmlrpcval( 'Wszystko OK', $xmlrpcString ) );
}
else
{
return new xmlrpcresp( new xmlrpcval( 'Zla wartosc', $xmlrpcString ) );
}
}
?>[/php:1:d1a0c06c8c]
Problem polega na tym, ze ta czesc:
Cytat
...
'signature' => array( array( $xmlrpcString, $xmlrpcString ) ),
...
'signature' => array( array( $xmlrpcString, $xmlrpcString ) ),
...
...w zalozeniach powinna okreslac, ze przekazujemy dwa parametry (stringi), a tym czasem przekaujac dwa parametry wystepuje blad. Natomiast przy przeslaniu jednego jest wszystko wporzadku :/
Czy ktos moze spotkal sie juz z tym ?