Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]xml request i response
chemiqs
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 2
Dołączył: 2.06.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Może po prostu takie małe API?

Lub po prostu CURLem wysłać XMLa (jako string) i odebrać zwrotkę (też string).
Go to the top of the page
+Quote Post
chemiqs
post
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 2
Dołączył: 2.06.2012

Ostrzeżenie: (0%)
-----


no właśnie jakieś małe API (IMG:style_emoticons/default/smile.gif) tylko nie umiem czegoś takiego postawić (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
chemiqs
post
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 2
Dołączył: 2.06.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 19:49