执行HTTP请求

时间:2011-12-16 16:16:49

标签: php

我想获取网址的响应,请使用以下代码说明http://www.google.com

$fp = @fopen("http://www.google.com/", "r");

但它总是返回false。 我也试过这个:

@file_get_contents("http://www.google.com/");

没有希望。 有人可以帮我吗?

5 个答案:

答案 0 :(得分:3)

您可以将file_get_contents()用于HTTP请求,但您必须确保正确设置正确的流上下文。

查看此代码(摘自PHP手册here):

// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.google.com/', false, $context);

这应该可行,即使在PHP中执行HTTP请求的更好方法是肯定使用cURL扩展,就像在此线程中建议的许多其他人一样。

答案 1 :(得分:1)

你可以使用cURL来检索这样的HTML

        function get_html($url){
            /**
            * Initialize the cURL session
            */
            $ch = curl_init();
            /**
            * Set the URL of the page or file to download.
            */
            curl_setopt($ch, CURLOPT_URL,$url);
            /**
            * Ask cURL to return the contents in a variable
            * instead of simply echoing them to the browser.
            */
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            /**
            * Execute the cURL session
            */
            $contents = curl_exec ($ch);
            /**
            * Close cURL session
            */
            curl_close ($ch);

            return $contents;
        }

答案 2 :(得分:0)

仅当设置了配置标志allow_url_fopen时,才能使用标准文件功能打开URL。这是一个系统级设置,因此您可能需要编辑php.ini来启用它。

答案 3 :(得分:0)

使用curl http://www.php.net/manual/en/curl.examples-basic.php

要好得多

它也可能是你的软件防火墙阻止php建立http连接。

答案 4 :(得分:0)

我编写了一个与PHP模块独立的小型HTTP客户端库。它捆绑在videodb.net php包中,包括缓存机制,HTTP 1.0 / 1.1,代理支持等。如果感兴趣,请检查核心/ httpclient.php。