![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 18.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() Ten post edytował mr.watson 18.08.2008, 14:04:16 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 04:38 |