Pagina 1 din 1

Preluare XML de pe alt server

Scris: Mie Iun 04, 2014
de alexinio3d
Salutare .
As vrea sa ma folosesc de un xml indepartat ( adica de pe alt server ) ca sal pot folosi in scriptul meu, dar nustiu cum sa fac sa functioneze .
Am incercat cu :

Cod: Selectaţi tot

<?php
$feed = file_get_contents('http://radio25.treisute.ro:5582/stats?sid=1&pass=dENL84TnVF8H705NyNvB');
$xml = simplexml_load_string($feed);
print_r($xml);
?>
, dar numi merge . Imi da urmatoarea eroare :

Cod: Selectaţi tot

[04-Jun-2014 09:07:06 Europe/Helsinki] PHP Warning:  file_get_contents(http://radio25.treisute.ro:5582/stats?sid=1&pass=dENL84TnVF8H705NyNvB): failed to open stream: Connection timed out in /home/********/public_html/**********/testverificare.php on line 2

Preluare XML de pe alt server

Scris: Mie Iun 04, 2014
de MarPlo
Salut
Probabil ca acel server are blocat accesul la pagini externe cu file_get_contents(). Inceara direct cu simplexml_load_file():

Cod: Selectaţi tot

$xml = simplexml_load_file('Adresa_Pagina');
print_r($xml);
 
Sau, indicat cu cURL.
Pe localhost, cu XAMPP, a functionat.

Cod: Selectaţi tot

// cUrl to get content from external page ( https://coursesweb.net/ )
function getPage($url) {
  // Browser agents
  $agents = array('Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0)', 'Opera/9.63 (Windows NT 6.0; U; ru) Presto/2.1.1', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');

  // adds headers data
  $curl_header = array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'Connection: keep-alive', 'Keep-Alive: 84600', 'Content-Type: text/html;charset=UTF-8');

  if($ch = curl_init()) {
    curl_setopt($ch, CURLOPT_USERAGENT, array_rand($agents, 1));
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
    curl_setopt($ch, CURLOPT_TIMEOUT, 84600);
    curl_setopt($ch, CURLOPT_NOSIGNAL, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
    curl_setopt($ch, CURLOPT_URL, $url);
    $str = curl_exec($ch);
    curl_close($ch);

    return utf8_decode($str);
  }
  else return 'Unable to use CURL on this server';
}

$feed = getPage('Adresa_Pagina');
$xml = simplexml_load_string($feed);
print_r($xml);
 

Preluare XML de pe alt server

Scris: Mie Iun 04, 2014
de alexinio3d
Nu merge.
Tot mi se incarca si numi da nici un rezultat.
Am copiat si tot codul care mi lai dat tu si nici asa numi merge, iar de primit vreo eroare nu primesc.
Poate fii si de la hostul meu ?? :-?

Preluare XML de pe alt server

Scris: Mie Iun 04, 2014
de MarPlo
Incearca si pe localhost, pe calculatorul tau. La mine a mers si codul postat de tine, si cel cu cUrl.
Probabil e de la hosting, au blocat accesul extern la alte pagini prin php.

Ca alternativa la file_get_contents() si cUrl e functia stream_context_create() , dar daca au blocat accesul la pagini de pe alt server prin php, e posibil ca nici asta sa nu functioneze.
Oricum, ca exemplu:

Cod: Selectaţi tot

function postRequest($url, $data='', $optional_headers = null) {
  // https://coursesweb.net/
  $params = array('http' => array('method' => 'GET', 'content' => $data));
  if($optional_headers !== null) $params['http']['header'] = $optional_headers;
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
  if(!$fp) throw new Exception("Problem with $url, $php_errormsg");
  $response = @stream_get_contents($fp);
  if($response === false) throw new Exception("Problem reading data from $url, $php_errormsg");

  return $response;
}
 
// Send a request
$result = postRequest('Adresa_Pagina');

echo htmlentities($result);     // output result