Witam,

Mam taki problem. Napisałem serwer soap:

CODE

<?php
require_once('Service.inc.php');
ini_set('soap.wsdl_cache_enabled', "0");
$server = new SoapServer('http://soap2.nettur.pl/Wyszukiwarka.wsdl');
$server->setClass('Wyszukiwarka');
$server->handle();
?>


gdzie plik Service.inc.php ma zawartość:

CODE

<?php
class Wyszukiwarka
{
public function Test($count)
{
$answer = str_repeat('x', $count);
return $answer;
}
}
?>


zaś klient soap wygląda tak:

CODE

<?php
ini_set('soap.wsdl_cache_enabled', "0");

$Client = new SoapClient('http://soap2.nettur.pl/index.php?wsdl',
array('trace' => 1, 'exceptions' => 1));

echo "<pre>";

try
{
$Answer = $Client->Test(5906);
}
catch(SoapFault $e)
{
echo "<br>error message:<br>";
echo $e."<br>";
echo $e->getMessage();
echo "<br>lastrequest:<br>";
echo wordwrap(htmlentities($Client->__getLastRequest()));
echo "<br>lastresponse:<br>";
echo wordwrap(htmlentities($Client->__getLastResponse()));
echo "<br>";
die();
}

var_dump($Answer);

echo "</pre>";
?>


Problem polega na tym, że jeżeli parametrem funkcji Test jest liczba większa niż 5907
wszystko działa poprawnie, zaś jeśli liczba jest z zakresu 1-5906 dostaję następujący
komunikat:

SoapFault exception: [Client] looks like we got no XML document in /usr/home/nettwww/soap_client/inne/Client.php:11
Stack trace:
#0 [internal function]: SoapClient->__call('Test', Array)
#1 /usr/home/nettwww/soap_client/inne/Client.php(11): SoapClient->Test(5906)
#2 {main} zaś funkcja $Client->__getLastResponse() oprócz koperty zwraca jakieś śmieci.

Co ciekawe, "poprawność" parametru Test zależy od nazwy samej funkcji (i całkowitego rozmiaru
koperty), tzn. jeżeli zamienimy Test np. na getResult błąd będzie się pojawiał dla
parametru z zakresu 1-5896

Problem zaczął się wraz z postawienie na serwerze php w wersji 5.2.6. Poprzednio
była wersja 5.1.4 i wszystko działało

Czy ktoś zetknął sie z tym problemem?

Pozdrawiam

OK. Już znalazłem. W pliku serwera SOAP po znakach ?> były jakieś dodatkowe znaki. Usunięcie owych dodatkowych znaków ukróciło "dziwaczne" zachowanie SOAP-a yahoo.gif