如何在没有PECL_HTTP或CURL的情况下在PHP中执行http get请求

时间:2012-06-06 13:30:45

标签: php http get

我正在建立网站&域托管(1& 1)仅提供基本PHP 5.4(没有外部库,如PECL_HTTP或CURL等,没有安装库)。

我可以将PHP类文件添加到我的代码中。我正在尝试使用Http / Https获取此URL  $url ="https://www.googleapis.com/freebase/v1/search?query=chocolate&count=2";

我试过Snoopy,& PHPClasses中至少有6个不同的类库,它们都没有返回任何内容(结果是空白的),我不知道为什么?但它们都会返回页面结果。

任何人都可以建议我可以包含的PHP类库(而不是任何已安装的库)可以执行简单的Http / Https get&返回结果。

3 个答案:

答案 0 :(得分:2)

如果您只想要此“文件”的内容,可以使用file_get_contents()(请参阅第一个示例)。请参阅@ OkekeEmmanuelOluchukwu关于如何发送标题的评论。

答案 1 :(得分:2)

完整http功能(包括标题等)的最佳选择是使用带有流上下文的文件功能。

来自php.net

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
          "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp)

答案 2 :(得分:0)

您在寻找页面输出吗?

正如您可能已经发现的那样,include something.php?foo=bar不起作用,因为php实际上查找以?for=bar结尾的文件,但您可以设置所有这样的get变量:

function getRequest($url, $data) {
    foreach ($data as $key => $value) {
        $_GET[$key] = $value;
    }
    include $url;
}

但是,在“完整路径”上获取变量(无法想到正确的名称),例如include 'http://something.com/foo.php?bar=baz'。您可以在http://php.net/manual/en/function.include.php找到“变量传递”的示例,并在非本地系统上获取变量。