【问题标题】:PHP get request returning falsePHP获取请求返回false
【发布时间】:2015-07-28 10:30:11
【问题描述】:
$data = file_get_contents("http://randomword.setgetgo.com/get.php");

var_dump($data);

我在发送这个 get 请求时总是出错,有人知道为什么吗?

我编写的一个简单的 PHP 脚本托管在同一个域中,它工作得很好,可能是这个问题,如果是这种情况,我该如何向这个 API 发送一个 get 请求?

我也尝试使用 curl,结果相同。它适用于我的测试脚本,但不适用于 API。

【问题讨论】:

  • 我认为您需要传递一些引用变量来获取和处理 API 中的数据,例如 get.php?some_data=some_value,您可以发布 get.php 代码
  • 嗯,我不这么认为。尝试通过简单地导航到浏览器中的 URL 来发送 http get 请求,您将看到它显示一个随机单词。 (除非我误解了它是如何工作的)。如果可以的话,我会发布 get.php 代码,但据我所知没有发布。
  • @RamRaider 嗯,你有任何类型的标题设置,还是你的 php 脚本只是这两行?
  • 只是你上面贴的两行每次返回一个随机词
  • @RamRaider 嗯,这很奇怪......我每次都从 var_dump 得到 bool(false)。它可能与我的 PHP 脚本所在的服务器有关吗?它由arvixe托管,服务器在美国

标签: php api get


【解决方案1】:

正如上面各种 cmets 中所述,最初发布的代码对我来说很好,但对 OP 却不是——很可能是由于 webhost 对各种标准 PHP 函数施加了限制。作为替代方案,cURL 应该能够检索内容,除非对标准 curl 函数也施加了类似的限制。

    $url='http://randomword.setgetgo.com/get.php';

    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_HEADER, 0 );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_USERAGENT, 'curl-wordfetcher' );
    $result = curl_exec( $ch );
    if( curl_errno( $ch ) ) echo 'Curl error: ' . curl_error( $ch );
    curl_close( $ch );

    print_r( $result );

【讨论】:

  • 我试过上面的cURL代码。当 url 设置为托管在同一服务器上的 php 时,它可以正常工作(如上面的 file_get_contents 策略),但是当使用外部托管的 php 文件作为 url 时,会返回以下错误:Curl error: Recv failure: Connection reset by peer 我会尝试联系我的虚拟主机看看这是否是由于他们的限制,如果是这样,请接受您的回答,但听起来好像是这样。 (非常感谢!)
  • 这确实是webhost设置的限制。在与他们交谈后,他们已经解除了它。现在可以使用了,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2016-02-22
  • 1970-01-01
  • 2021-01-24
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多