首页 后端开发 php教程 php调用远路url的六种方法

php调用远路url的六种方法

Jun 13, 2016 pm 01:07 PM
cookie curl http request url

php调用远程url的六种方法

示例代码1: 用file_get_contents 以get方式获取内容
???
$url='http://www.baidu.com/';

$html = file_get_contents($url);
?? //print_r($http_response_header);
?? ec($html);
?? printhr();

?? printarr($http_response_header);

printhr();
?? ?>
?
??? 示例代码2: 用fopen打开url, 以get方式获取内容
??

?? $fp = fopen($url, 'r');
? ?
?? printarr(stream_get_meta_da

ta($fp));

printhr();
?? while(!feof($fp)) {
?????? $result .= fgets($fp, 1024);
}
echo "url body:??? $result";
?? printhr();

?? fclose($fp);
?? ?>

示例代码3:用file_get_contents函数,以post方式获取url

?? ?? $data = array ('foo' => 'bar');
?? $data = http_build_query($data);

?? $opts = array (
'http' => array (
?? 'method' => 'POST',
??? 'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
???? "Content-Length: " . strlen($data) . "\r\n",
?? 'content' => $data
?? ),
?? );

$context = stream_context_create($opts);
$html = file_get_contents('http://localhost/e/admin/test.html', false, $context);

echo $html;
?>

示例代码4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body

function get_url ($url,$cookie=false) {
$url = parse_url($url);
$query = $url[path]."?".$url[query];
ec("Query:".$query);
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
if (!$fp) {
?????? return false;
} else {
?????? $request = "GET $query HTTP/1.1\r\n";
?????? $request .= "Host: $url[host]\r\n";
?????? $request .= "Connection: Close\r\n";
?????? if($cookie) $request.="Cookie:?? $cookie\n";
?????? $request.="\r\n";
?????? fwrite($fp,$request);
?????? while(!@feof($fp)) {
???????? $result .= @fgets($fp, 1024);
?????? }
?????? fclose($fp);
?????? return $result;
}
}


//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false) {

??? $rowdata = get_url($url,$cookie);
??? if($rowdata)
??? {
??????? $body= stristr($rowdata,"\r\n\r\n");
??????? $body=substr($body,4,strlen($body));
??????? return $body;
??? }
? ?
??? return false;

}


?>

示例代码5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

function HTTP_Post($URL,$data,$cookie, $referrer="") {

// parsing the given URL
$URL_Info=parse_url($URL);

// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer="111";

// making string from $data
foreach($data as $key=>$value)
$values[]="$key=".urlencode($value);
$data_string=implode("&",$values);

// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;

// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";

$request.="Cookie:?? $cookie\n";

$request.="\n";
$request.=$data_string."\n";

$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
?????? $result .= fgets($fp, 1024);
}
fclose($fp);

return $result;
}
printhr();
?>
示例代码6:使用curl库,使用curl库之前,你可能需要查看一下php.ini,查看是否已经打开了curl扩展


$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;
?>
关于curl库:
curl官方网站http://curl.haxx.se/
curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧


function printarr(array $arr)
{
??? echo "
Row field count: ".count($arr)."
";
??? foreach($arr as $key=>$value)
??? {
????? ?
??????????? echo "$key=$value???
";
??? }
}
?>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
为什么NameResolutionError(self.host, self, e) from e,怎么解决 为什么NameResolutionError(self.host, self, e) from e,怎么解决 Mar 01, 2024 pm 01:20 PM

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

Linux下更新curl版本教程! Linux下更新curl版本教程! Mar 07, 2024 am 08:30 AM

在Linux下更新curl版本,您可以按照以下步骤进行操作:检查当前curl版本:首先,您需要确定当前系统中安装的curl版本。打开终端,并执行以下命令:curl--version该命令将显示当前curl的版本信息。确认可用的curl版本:在更新curl之前,您需要确定可用的最新版本。您可以访问curl的官方网站(curl.haxx.se)或相关的软件源,查找最新版本的curl。下载curl源代码:使用curl或浏览器,下载您选择的curl版本的源代码文件(通常为.tar.gz或.tar.bz2

html和url的区别是什么 html和url的区别是什么 Mar 06, 2024 pm 03:06 PM

区别:1、定义不同,url是是统一资源定位符,而html是超文本标记语言;2、一个html中可以有很多个url,而一个url中只能存在一个html页面;3、html指的是网页,而url指的是网站地址。

PHP Curl中如何处理网页的 301 重定向? PHP Curl中如何处理网页的 301 重定向? Mar 08, 2024 am 11:36 AM

PHPCurl中如何处理网页的301重定向?在使用PHPCurl发送网络请求时,时常会遇到网页返回的301状态码,表示页面被永久重定向。为了正确处理这种情况,我们需要在Curl请求中添加一些特定的选项和处理逻辑。下面将详细介绍在PHPCurl中如何处理网页的301重定向,并提供具体的代码示例。301重定向处理原理301重定向是指服务器返回了一个30

理解网页重定向的常见应用场景并了解HTTP301状态码 理解网页重定向的常见应用场景并了解HTTP301状态码 Feb 18, 2024 pm 08:41 PM

掌握HTTP301状态码的含义:网页重定向的常见应用场景随着互联网的迅猛发展,人们对网页交互的要求也越来越高。在网页设计领域,网页重定向是一种常见且重要的技术,通过HTTP301状态码来实现。本文将探讨HTTP301状态码的含义以及在网页重定向中的常见应用场景。HTTP301状态码是指永久重定向(PermanentRedirect)。当服务器接收到客户端发

浏览器cookie的存储位置详解 浏览器cookie的存储位置详解 Jan 19, 2024 am 09:15 AM

随着互联网的普及,我们使用浏览器进行上网已经成为一种生活方式。在日常使用浏览器过程中,我们经常会遇到需要输入账号密码的情况,如网购、社交、邮件等。这些信息需要浏览器记录下来,以便于下次访问时不需要再次输入,这时候Cookie就派上了用场。什么是Cookie?Cookie是指由服务器端发送到用户浏览器上并存储在本地的一种小型数据文件,它包含了一些网站的用户行为

如何使用C++实现HTTP流传输? 如何使用C++实现HTTP流传输? May 31, 2024 am 11:06 AM

如何在C++中实现HTTP流传输?使用Boost.Asio和asiohttps客户端库创建SSL流套接字。连接到服务器并发送HTTP请求。接收HTTP响应头并打印它们。接收HTTP响应正文并打印它。

如何查找浏览器中的cookie 如何查找浏览器中的cookie Jan 19, 2024 am 09:46 AM

在日常使用计算机与互联网的过程中,我们经常会接触到cookie。cookie是一种小型的文本文件,它保存了我们在网站上的访问记录、偏好设置和其他信息。这些信息可以被网站使用,以便更好地为我们提供服务。但是有时候,我们需要查找cookie的信息,来找到我们要的内容。那么我们该如何在浏览器中查找cookie呢?首先,我们需要了解cookie的存在位置。在浏览器中

See all articles