Saya mengalami masalah memanggil url dari kode PHP. Saya perlu memanggil layanan menggunakan string kueri dari kode PHP saya. Jika saya mengetik url ke browser, itu berfungsi dengan baik, tetapi jika saya menggunakan file-get-content () untuk melakukan panggilan, saya mendapatkan:
Peringatan: file-get-content (http: // ....) gagal membuka aliran: permintaan HTTP gagal! HTTP / 1.1 202 Diterima di ...
Kode yang saya gunakan adalah:
$query=file_get_contents('http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
echo($query);
Seperti saya katakan - panggilan dari browser dan berfungsi dengan baik. Ada saran?
Saya juga mencoba dengan url lain seperti:
$query=file_get_contents('http://www.youtube.com/watch?v=XiFrfeJ8dKM');
Ini berfungsi dengan baik ... mungkinkah url yang perlu saya hubungi memiliki satu detik http://
di dalamnya?
php
api
query-string
file-get-contents
tidak terdefinisi
sumber
sumber
CURLOPT_USERAGENT
sangat penting dalam kasus saya, terima kasih!Mungkinkah ini masalahmu?
sumber
urlencode()
pada parameter GET memecahkan masalah.<?php $lurl=get_fcontent("http://ip2.cc/?api=cname&ip=84.228.229.81"); echo"cid:".$lurl[0]."<BR>"; function get_fcontent( $url, $javascript_loop = 0, $timeout = 5 ) { $url = str_replace( "&", "&", urldecode(trim($url)) ); $cookie = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_ENCODING, "" ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); $content = curl_exec( $ch ); $response = curl_getinfo( $ch ); curl_close ( $ch ); if ($response['http_code'] == 301 || $response['http_code'] == 302) { ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); if ( $headers = get_headers($response['url']) ) { foreach( $headers as $value ) { if ( substr( strtolower($value), 0, 9 ) == "location:" ) return get_url( trim( substr( $value, 9, strlen($value) ) ) ); } } } if ( ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) && $javascript_loop < 5) { return get_url( $value[1], $javascript_loop+1 ); } else { return array( $content, $response ); } } ?>
sumber
get_url
seharusnyaget_fcontent
karena Anda mengubah nama fungsi itu sendiri. Ini sebenarnya adalah panggilan fungsi rekursif yang mencoba kembali untuk mendapatkan konten URL dengan mengubah beberapa parameter.file_get_contents()
menggunakanfopen()
pembungkusnya, oleh karena itu dibatasi dari mengakses URL melaluiallow_url_fopen
opsi dalam php.ini.Anda harus mengubah php.ini Anda untuk mengaktifkan opsi ini atau menggunakan metode alternatif, yaitu cURL - sejauh ini merupakan cara yang paling populer dan, sejujurnya, standar untuk mencapai apa yang Anda coba lakukan.
sumber
file_get_contents()
bekerja di URL yang berbeda. Meskipun demikian, ini masih merupakan tip yang bagus untuk orang lain yang mengalami masalah ini.Anda pada dasarnya diminta untuk mengirim beberapa informasi dengan permintaan tersebut.
Coba ini,
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n")); //Basically adding headers to the request $context = stream_context_create($opts); $html = file_get_contents($url,false,$context); $html = htmlspecialchars($html);
Ini berhasil bagi saya
sumber
Saya melihat bahwa URL Anda memiliki spasi di dalamnya. Saya pikir itu biasanya hal yang buruk. Coba encoding URL dengan
$my_url = urlencode("my url");
dan kemudian menelepon
dan lihat apakah Anda lebih beruntung.
sumber
Saya mendapat masalah serupa, saya mengurai url youtube. Kode tersebut adalah;
$json_is = "http://gdata.youtube.com/feeds/api/videos?q=".$this->video_url."&max-results=1&alt=json"; $video_info = json_decode ( file_get_contents ( $json_is ), true ); $video_title = is_array ( $video_info ) ? $video_info ['feed'] ['entry'] [0] ['title'] ['$t'] : '';
Kemudian saya menyadari bahwa itu
$this->video_url
termasuk spasi. Saya menyelesaikannya dengan menggunakantrim($this->video_url)
.Mungkin itu akan membantu Anda. Semoga berhasil
sumber
Saya tidak yakin tentang parameternya (mpaction, format), jika ditentukan untuk halaman amazonaws atau ##. ##.
Coba urlencode () url.
sumber
$query=file_get_contents('http://###.##.##.##/mp/get?' . http_build_query(array('mpsrc' => 'http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv')));
sumber
Saya punya masalah serupa.
Karena batas waktu!
Batas waktu dapat ditunjukkan seperti ini:
$options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => "POST", 'content' => http_build_query($data2), 'timeout' => 30, ), ); $context = stream_context_create($options); $retour = $retour = @file_get_contents("http://xxxxx.xxx/xxxx", false, $context);
sumber
Gunakan ini
file_get_contents($my_url,null,null);
sumber