czesc,
Mam problem z otrzymaniem danych z serwera typu soap.

Najprościej w świecie otwieram sobie socket i uderzam do niego, a potem oczekuję odpowiedzi:

  1. <?php
  2. $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  3.  
  4. socket_connect($sock, $host, 8080);
  5.  
  6. switch(socket_select($r = array($sock), $w = array($sock), $f = array($sock), 5)){
  7.  case 2:
  8.  echo "[-] Connection Refusedn";
  9.  break;
  10.  case 1:
  11.  echo "[+] Connectedn";
  12.  break;
  13.  case 0:
  14.  echo "[-] Timeoutn";
  15.  break;
  16. }
  17.  
  18. if (!socket_write ($sock, $headers)) die("faild sending content to socket on $host: $errno $errstr");
  19. if (!socket_write ($sock, $request_body)) die("faild sending content to socket on $host: $errno $errstr");
  20.  
  21. $response = '';
  22.  
  23. if(!socket_last_error($sock)){
  24.  if($data=socket_read($sock,512,PHP_NORMAL_READ)){
  25.  echo $data;
  26.  }
  27. }
  28.  
  29. socket_close($sock);
  30.  
  31. die('ca');
  32. ?>


Tylko, że doświadczam dwóch stanów w miarę modysikacji kodu:
1. Skrypt się wykonuje bez końca i nic się nie wyświetla, bo nadal się wykonuje.
2. Firefox wyskakuje z okienkiem zapisz plik client.php (czyli nazwa mojego pliku), uruchominy z curla dostaję komunikat "empty request".

Najśmieszniejsze jest to, że używając klasy PEAR::SOAP dostaję pięknego XML-a, a patrząc w kod metody wysyłającej jest rozwiązane w analogiczny sposób poprzez fsockopen, a kiedy kopiuję ten kawałek kodu i próbuję użyć u siebie to mam tak jak w drugim przypadku - czyli zapisz plik/empty request.

wielkie dzięki na konkretną odpowiedź gdzie mogłem popełnić błąd.

pozdro