【问题标题】:How do I send a GET request with a header from PHP?如何发送带有 PHP 标头的 GET 请求?
【发布时间】:2013-10-16 01:43:27
【问题描述】:

如果这是一个重复的问题,请给我打电话,但这开始变得荒谬了。 我想用 PHP:

 GET http://www.example.com/hello.xyz

并将此标头添加到请求中:

 "X-Header-Name: $foobar" 

其中 foobar 来自已定义的 php 变量。

然后将响应存储在变量中。而已!不多也不少。 但是我找不到! 我不想使用 curl 或类似的东西,如果我每次都运行 curl,它会减慢它的速度。 编辑:我对使用 curl 的主要关注是与 Windows 的兼容性(本地服务器)与 Linux(部署服务器)。

<?php

echo "So, how do I do it in the simplest way possible?";

?>

【问题讨论】:

  • 像 curl 这样的库是最简单的方法。您使用的 任何 库都可能“减慢”脚本执行速度,因为需要时间的是请求本身。谷歌搜索How do I send a GET request with a header from PHP? 得到 2 个很好的结果,说明如何
  • 如果出于性能原因不想使用 curl,则必须在 curl 中实现和测量它。你的代码哪里太慢了?
  • 为什么不使用 cURL?它还将为您提供更多用于处理错误等的功能。此外,如果您担心在短时间内发出大量请求,您可以使用curl_multi_exec() 执行并行请求,这应该可以让您的脚本执行得更快,然后执行一系列串行shell_exec() 命令或其他命令.我有一个不错的轻量级curl_multi_exec() REST 客户端github.com/mikecbrant/php-rest-client,您可以随意使用。
  • 您可以在 PHP 中使用套接字函数。 php.net/manual/en/book.sockets.php。您只需手动完成 cURL 库所做的所有事情。
  • 哦,我以为我会从 PHP 运行很多子进程。我担心的是,如果/当我切换到 Windows 进行本地测试时,我将不得不处理兼容性问题。

标签: php http curl header get


【解决方案1】:

如果您不想使用curl,但不确定速度,您可以使用file_get_contents,但它是php 的内置函数,而curl 不是。在谈论speed 时,我认为无论您使用什么进行远程请求,速度/性能都将取决于网络连接速度而不是函数/库,并且这些之间可能有些不同(curl/file_get_contents/fsockopen)但我认为它会很小(1-2 %),而且你看不出区别,看起来几乎一样。

$opts = array(
  'http'=>array(
      'method'=>"GET",
      'header'=>"X-Header-Name: $foobar"
));
$context = stream_context_create($opts);
$data = file_get_contents('http://www.example.com/hello.xyz', false, $context);
if($data) {
    // do something with data
}

另外,如果你想使用curl,那么你可以使用这个

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Header-Name: $foobar"));
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/hello.xyz");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
if ($curl_errno == 0) {
    // $data received in $data
}

另外,check this answer,它可能会帮助您做出决定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多