Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][DOM] Problem z pobraniem danych z zew. serwera
Forum PHP.pl > Forum > XML, AJAX > XML
Ryrzy
Witam, próbuję zrobić skrypt, który pobierałby dane z serwera LG o telefonie na podstawie jego IMEIu... link do takich danych to np:

http://csmg.lgmobile.com:9002/csmg/b2c/cli...358635053320769

Skrypt próbuję zrobić na bazie tego lub tego

i problem pojawia się gdy jako plik podaje adres do tegoż właśnie serwera LG... nic nie pobiera... przez przeglądarke link działa... jeśli zawartosc linku zapisze do testowego xml i link w skrypcie zmienię na odnosnik do samego pliku test.xml to działa i pobiera dane które chcę poprawnie... Co może być powodem problemu pobierania danych bezpośrednio z linku i czy da się to obejść ?

Dziękuje smile.gif
markuz
  1. <?php
  2.  
  3. $objDOM = new DOMDocument();
  4.  
  5. $objDOM->load("http://csmg.lgmobile.com:9002/csmg/b2c/client/auth_model_check2.jsp?esn=358635053320769");
  6.  
  7. var_dump($objDOM);
  8.  
  9. ?>


U mnie działa..
Ryrzy
mam to tak:

  1. <?
  2.  
  3. $objDOM = new DOMDocument();
  4. $objDOM->load("http://csmg.lgmobile.com:9002/csmg/b2c/client/auth_model_check2.jsp?esn=358635053320769");
  5.  
  6. $dane = $objDOM->getElementsByTagName("auth_model_check");
  7.  
  8. foreach( $dane as $value )
  9. {
  10. $model = $value->getElementsByTagName("model");
  11. $models = $model->item(0)->nodeValue;
  12.  
  13.  
  14. $sw_version = $value->getElementsByTagName("sw_version");
  15. $sw_versions = $sw_version->item(0)->nodeValue;
  16.  
  17. echo "$models $sw_versions";
  18. }
  19.  
  20. ?>
i nic nie wyświetla, po zmienia linku na test.xml, w którym jest dokładnie to samo co pod linkiem... działa ;/ wyświetla dane które chce ...

po użyciu Twojego kodu mam:
Cytat
object(DOMDocument)#1 (34) { ["doctype"]=> NULL ["implementation"]=> string(22) "(object value omitted)" ["documentElement"]=> NULL ["actualEncoding"]=> NULL ["encoding"]=> NULL ["xmlEncoding"]=> NULL ["standalone"]=> bool(true) ["xmlStandalone"]=> bool(true) ["version"]=> string(3) "1.0" ["xmlVersion"]=> string(3) "1.0" ["strictErrorChecking"]=> bool(true) ["documentURI"]=> NULL ["config"]=> NULL ["formatOutput"]=> bool(false) ["validateOnParse"]=> bool(false) ["resolveExternals"]=> bool(false) ["preserveWhiteSpace"]=> bool(true) ["recover"]=> bool(false) ["substituteEntities"]=> bool(false) ["nodeName"]=> string(9) "#document" ["nodeValue"]=> NULL ["nodeType"]=> int(9) ["parentNode"]=> NULL ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> NULL ["lastChild"]=> NULL ["previousSibling"]=> NULL ["attributes"]=> NULL ["ownerDocument"]=> NULL ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> NULL ["baseURI"]=> NULL ["textContent"]=> string(0) "" }
markuz
Dziwne bo u mnie na XAMPP-ie podany przez Ciebie kod działa (po zmianie znacznika z <? na <?php).

Z jakiego serwerz korzystasz?
nospor
U mnie Twoj kod dziala.

Pewnie masz na serwerze wyłączone ładowanie plikow z URLi. Musisz ustawic flage
allow_url_fopen
Ryrzy
czyli problem leży po stronie mojego serwera ... ehh a siedzę nad tym od rana i myśle smile.gif ok, dziękuje... podeślę info administracji, zobaczymy co odpowie smile.gif dam znac jak się sprawa potoczyła smile.gif
nospor
Wystarczy ze odpalisz
phpinfo();
i bedziemy wiedzili jaką masz flage allow_url_fopen czy on czy off
Ryrzy
hmmmm dziwne, bo mam:

Cytat
allow_url_fopen On On
Ryrzy
cURL support enabled
cURL Information 7.28.0
arpi
Mam bardzo podobny problem.
Gdy odczytuje dane z pliku xml wszytsko jest ok.

Plik xml.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <produkty>
  3. <produkt>
  4. <nazwa_tow>sterownik</nazwa_tow>
  5. <ceny>
  6. <cena prog="1">123</cena>
  7. <cena prog="2">125</cena>
  8. </ceny>
  9. </produkt>
  10. </produkty>


skrypt php
  1. <?php
  2.  
  3. $xml = simplexml_load_file("xml.xml");
  4.  
  5. foreach ($xml->produkt as $produkt) {
  6. echo $produkt->nazwa_tow . '<br>';
  7. foreach ($produkt->ceny->cena as $cena) {
  8. echo $cena->getName() . ' ' . $cena['prog'] . ' to: ' . $cena . '';
  9. }
  10. }
  11.  
  12.  
  13. ?>


Problem pojawia się gdy chce odczytać dane z pliku xml generowanego w locie
plik xml.php
  1. <?php
  2. header('Content-type: text/xml; charset=utf-8');
  3. $tresc ='<?xml version="1.0" encoding="utf-8"?>
  4. <produkty>
  5. <produkt>
  6. <nazwa_tow>sterownik</nazwa_tow>
  7. <ceny>
  8. <cena prog="1">123z</cena>
  9. <cena prog="2">125z</cena>
  10. </ceny>
  11. </produkt>
  12. </produkty>';
  13. echo $tresc;
  14. ?>


skrypt php identyczny ze zmienioną ściężką
  1. <?php
  2.  
  3. $xml = simplexml_load_file("xml.php");
  4.  
  5. foreach ($xml->produkt as $produkt) {
  6. echo $produkt->nazwa_tow . '<br>';
  7. foreach ($produkt->ceny->cena as $cena) {
  8. echo $cena->getName() . ' ' . $cena['prog'] . ' to: ' . $cena . '';
  9. }
  10. }
  11.  
  12.  
  13. ?>


Czy takie pliki jakoś inaczej należy odczytywać ? Nie znalazłem niestety informacji nigdzie na ten temat...
w phpinfo mam
allow_url_fopen On On
trueblue
Ale jaki masz dokładnie problem?
Występuje jakiś błąd?

arpi
pojawia się pusta strona w przeglądarce przy odczycie z pliku xml.php

testowałem skrypt na 2 róznych serwerach na których administruje strony, ale nie działa również włączenie błędów
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1 );

aby cokolwiek podejrzeć...

Dodam, że wpisanie linku do strony na zewnętrzym serwerze w przeglądarce generuje plik xml poprawnie więc dostęp na pewno jest prawidłowy.
trueblue
Spróbuj pobrać najpierw plik file_get_contents i wyświetlić zawartość.
Ścieżka do pliku xml.php jest poprawna?
nospor
$xml = simplexml_load_file("xml.php");
Przeciez to pobiera zawartosc pliku.php a nie wynik dzialania pliku.php....
Identycznie zachowa sie file_get_contents() - to pobierze zawartosc pliku a nie wynik jego wykonania....
trueblue
Cytat(nospor @ 9.05.2014, 08:41:37 ) *
Przeciez to pobiera zawartosc pliku.php a nie wynik dzialania pliku.php....
Identycznie zachowa sie file_get_contents() - to pobierze zawartosc pliku a nie wynik jego wykonania....

Z zewnętrznego adresu URL?

Ja rozumiem, że kolega chce pobrać z zewnętrznego (pisze, że "wpisanie linku do strony na zewnętrznym serwerze w przeglądarce generuje plik xml").
Stąd moje pytanie o poprawność ścieżki.
nospor
$xml = simplexml_load_file("xml.php");
Kod ten wskazuje ewidentnie, ze dane pobierane są normalnie z dysku a nie z URL.
Gdyby dane byly pobierane z URL, to wtedy jak najbardziej zostanie zwrocony wynik dzialania pliku php a nie jego zawartosc.
trueblue
Dlatego też pytałem czy ścieżka do pliku jest poprawna.
nospor
No wlasnie... pytasz o sciezke.... powinienies pytac o adres URL smile.gif
arpi
Dokładnie to jest tak, że tworzę skrypt który pobierze dane z zewnętrznego serwera
przykładowo www.xyz-hurtownia.pl/cennik.php.

Na potrzeby wpisu na forum uprościłem temat i stworzyłem testowe pliki na serwerze na którym mam stronę www.

Rozumiem, że funkcja
simplexml_load_file("xml.php");
nie pobiera wyniku działania dlatego ten błąd.

A jeśli wpiszę w ścieżce adres url to skrypt powinien wykonać się poprawnie ? Trochę to dziwne :/


Czy istnieje w takim razie inne polecenie do pobrania pliku xml generowanego w locie z php (z pliku lokalnego) ?
Pyton_000
Spróbuj tego
  1. $file = file_get_contents('/path/to/file.php');
  2. $xhtml = eval("?>$file");
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-2021 Invision Power Services, Inc.