Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]xml request i response
Forum PHP.pl > Forum > Przedszkole
chemiqs
hej

chciałbym zrobic coś takiego jak skrypt wysyłający requesta na jakiś adres (załóżmy localhost:8000 - drugi serwer www) i żeby ten host wysyłał response do mnie z pewnymi odpwiedziami.
Chodzi mi o to, żeby host:8000 analizował plik XML który do niego przesyłam, no i żeby mi odpowiedział też XML-em.

czy ktoś miałby jakąś sugestię jak to można wykonać?
z góry dzięki.
markonix
Może po prostu takie małe API?

Lub po prostu CURLem wysłać XMLa (jako string) i odebrać zwrotkę (też string).
chemiqs
no właśnie jakieś małe API smile.gif tylko nie umiem czegoś takiego postawić smile.gif
markonix
Proszę, tu masz całe API:

  1. <?php
  2. echo json_decode(file_get_contents('http://www.example.com/api_server.php?data='. json_encode($data));


Kiedyś też myślałem, że API to jakaś magia, ale wcale tak nie jest (oczywiście jeżeli potrzebujemy coś łatwego i na szybko, bo temat jest rozległy SOAP, REST itp).
chemiqs
Dzięki
pomogłeś bardzo.
Mam jeszcze jedno pytanie.

W swojej wersji w __construct wykorzystałem fsockopen do połączenia a następnie w funkcjach zapisuję i odczytuje fwrite($xml) i fgets().
W __construct mam coś takiego:

  1. $errno = 0;
  2. $errst = '';
  3. $socket = fsockopen($host, $port, $errno, $errst, 10);
  4. if($socket === false)
  5. {
  6. throw new EppException($errst, $errno);
  7. }
  8. else
  9. {
  10.  
  11. stream_set_timeout($socket, 20);
  12. socket_set_blocking($socket, false);
  13. $this->socket = $socket;
  14.  
  15. $loginxml = $this->login($user, $pass);
  16. $code = (int)$loginxml->response->result->attributes()->code;
  17.  
  18.  
  19. print_r($loginxml);
  20. echo "<br><br><br><br><br><br>";
  21.  
  22. if($this->isError($code))
  23. {
  24. throw new EppException($this->tab_errors[$code], $code);
  25. }
  26.  
  27.  
  28.  
  29. $response = $this->hello();
  30. if(strlen($response) == 0){
  31. throw new EppException("Błąd połączenia z serwerem.");
  32. }
  33. print_r($response);
  34.  
  35. exit; itd... itd...


Ten kod nie zadziała ponieważ funkcja LOGIN i HELLO nie chcą działać RAZEM (wykonywane po sobie). Jak jedno z nich zakomentuje to drugie działa juz ok - ale razem się zapętlają - chyba.

Może trzeba jakiś bufor czyścić. Może trzeba zamknąć socket? Nie wiem. help please.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.