`
岁月如歌
  • 浏览: 107057 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

php调用远程url的六种方法

阅读更多

示例代码1: 用file_get_contents 以get方式获取内容
    <?php

$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

   <?php
   $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 "<br> Row field count: ".count($arr)."<br>";
    foreach($arr as $key=>$value)
    {
       
            echo "$key=$value    <br>";
    }
}
?>
分享到:
评论

相关推荐

    php调用远程url的六种方法,php函数

    以下将详细介绍文件中提到的六种PHP调用远程URL的方法及其具体实现: ### 1. 使用 `file_get_contents` 进行GET请求 `file_get_contents` 是一个非常简单的函数,用于读取整个文件或URL中的内容。例如,要从百度...

    php 调用远程url的六种方法小结

    以下是六种常见的PHP调用远程URL的方法: 1. **file_get_contents()** `file_get_contents()` 是一个简单易用的函数,它能直接读取远程或本地文件的内容。在示例代码1中,通过设置$url变量为远程URL,然后调用`...

    远程调用

    RPC使得开发者可以像调用本地函数那样调用远程系统上的函数,简化了分布式系统的设计。 2. **RMI(Remote Method Invocation)**:Java平台的远程方法调用,允许Java对象在不同的JVM之间进行交互。RMI不仅包括RPC的...

    PHP调用C#的webservice

    C# WebService,即基于.NET框架的ASMX(Advanced Services for Microsoft)或WCF(Windows Communication Foundation)服务,可以通过SOAP(Simple Object Access Protocol)协议提供远程方法调用。 **WebService**...

    一个读取远程文件的php函数类.zip

    这个“读取远程文件的php函数类”可能结合了以上一种或多种方式,并进行了封装,以便于开发者更方便地调用。它可能还包括错误处理、资源管理、性能优化等功能。 在实际应用中,类可能还包含了其他特性,如配置选项...

    PHP下载远程图片到本地类.zip

    3. **调用下载方法**:使用对象的方法执行下载操作,通常会有返回值表明下载是否成功。 4. **错误检查**:检查返回值或类的错误属性,判断下载是否成功,并处理可能出现的错误。 在"php中文网免费下载站.txt"和"php...

    php下载远程文件到本地存储的函数类.zip

    在实际使用这个函数类时,我们需要按照其提供的文档或示例代码来调用相关方法,传入必要的参数,如远程文件URL、本地保存路径等。同时,根据项目的具体需求,可能还需要考虑如何处理并发下载、多线程、下载限速等...

    php远程上传图片

    【PHP远程上传图片】 在PHP中,远程上传图片是指通过HTTP协议将图片文件直接上传到远程服务器,而不需要先在本地存储。这个过程通常涉及到HTTP POST请求,其中包含文件数据。这里我们关注的是一个名为`socketUpload...

    API接口调用(PHP)

    PHP作为一种广泛使用的服务器端脚本语言,经常被用来调用各种API接口,如短信、邮件、快递等。 #### 邮件API调用 ##### 邮件发送原理 邮件的发送依赖于两个核心的邮件协议:SMTP(简单邮件传输协议)和POP3(邮局...

    PHP下载远程图片保存到本地类.zip

    3. **打开远程文件**:使用`fopen()`函数以读取模式打开远程URL,可能需要配合`stream_context_create()`创建一个带有特定选项的流上下文,如设置HTTP头或处理代理。 4. **读取数据**:通过`fpassthru()`或`fgets()...

    php远程文件下载类.zip

    在这个场景中,我们有一个专门用于下载远程文件的PHP类,通过实例化这个类并调用其方法,可以实现远程文件的下载。 在PHP中,我们可以利用cURL库或者file_get_contents函数来下载远程文件。cURL库提供了丰富的选项...

    基于php的下载远程图片

    1. PHP类和对象:理解类的构造函数、方法和属性,以及如何实例化和调用类的方法。 2. 文件操作:包括读取远程文件(`file_get_contents`或`cURL`)、保存文件到本地。 3. HTTP请求:了解HTTP请求的基本原理,包括GET...

    jpush(极光推送)远程调用api PHP版

    3. **PHP调用JPush API步骤** - **构建请求URL**:JPush API的请求URL通常以`https://api.jpush.cn/v3/`开头,根据不同的API接口,后面会跟上相应的路径,例如发送消息的API是`/messages/push`。 - **构建POST数据...

    PHP远程文件下载解压压缩包.zip文件file文件操作类

    本示例介绍了一种方法,通过PHP实现在线更新远程的ZIP文件,并将其解压到指定目录以替换或更新本地文件。这种方法有助于简化多站点的同步更新,以及在网站授权过程中实现远程文件下载的需求。 首先,我们需要一个...

    PHP下载远程图片到本地类

    - `downloadImage($remoteUrl, $localPath)`: 这个方法接收远程图片URL和本地保存路径作为参数,执行下载操作。 - `checkImageExist($url)`: 检查远程图片是否存在,防止因无效URL导致的错误。 - `saveImage($data, ...

    felx,jsn远程调用

    一种常见的远程调用技术是RPC(Remote Procedure Call),Flex支持AMF(Action Message Format)作为其默认的数据交换格式,这种格式能高效地传输数据,且对ActionScript友好。 JSON(JavaScript Object Notation)...

    php远程下载类分享

    它首先重置所有的相关参数,然后调用`PrivateInit`方法对URL进行解析,并初始化会话。这个方法的命名似乎有些不准确,因为它实际上并没有真正打开一个URL,而是进行了一些准备工作。 `printError`方法用于打印出...

    客户端调用服务器端例子

    在IT行业中,客户端调用服务器端的例子是一种常见的交互模式,特别是在Web开发中。这个例子主要涉及到了Ajax(异步JavaScript和XML)技术,用于实现客户端与服务器端的远程调用。Ajax允许网页不需重新加载整个页面的...

    PHP+Curl远程模拟登录并获取数据

    **PHP+Curl远程模拟登录并获取数据** 在Web开发中,有时我们需要从其他网站抓取信息或者调用API接口,这时PHP的Curl库就显得非常有用。Curl是一个强大的命令行工具,同时也被集成到PHP中,允许我们通过HTTP、HTTPS...

Global site tag (gtag.js) - Google Analytics