PHP cURL 错误:“服务器回复为空”

2023-11-25

我有一个类函数与 RESTful API 接口Last.FM- 其目的是为我的用户获取最新的曲目。这里是:

private static $base_url = 'http://ws.audioscrobbler.com/2.0/';

public static function getTopTracks($options = array())
{
  $options = array_merge(array(
    'user' => 'bachya',
    'period' => NULL,
    'api_key' => 'xxxxx...', // obfuscated, obviously
  ), $options);

  $options['method'] = 'user.getTopTracks';

  // Initialize cURL request and set parameters
  $ch = curl_init();
  curl_setopt_array($ch, array(
    CURLOPT_URL            => self::$base_url,
    CURLOPT_POST           => TRUE,
    CURLOPT_POSTFIELDS     => $options,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_USERAGENT      => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
  ));

  $results = curl_exec($ch);
  return $results;
}

这返回"Empty reply from server"。我知道有人认为这个错误是由于网络基础设施中的某些故障造成的;我不相信我的情况是这样。如果我通过命令行运行 cURL 请求,我会得到我的数据; Last.FM 服务已启动并可访问。

在我去找那些人看看是否有任何变化之前,我想与你们核实一下,看看我的代码中是否存在导致此问题的问题。

Thanks!

ANSWER:@Jan Kuboschek 帮助我偶然发现了这里(可能)发生的事情。通过给CURLOPT_POSTFIELDS关联数组,指定的特定内容类型可能不适用于某些 RESTful 服务。更聪明的解决方案是手动创建该数据的 URL 编码版本并将其作为CURLOPT_POSTFIELDS.

欲了解更多信息,请查看:http://www.brandonchecketts.com/archives/array-versus-string-in-curlopt_postfields


一个常见问题是 URL 中的空格 - 开头、中间或结尾。你检查过吗?

Edit- 根据下面的评论,间距不是问题。

我运行了你的代码并遇到了同样的问题 - 没有任何输出。我尝试了该 URL,并通过 GET 请求,服务器与我对话。我会做以下事情:

  1. 使用以下内容作为 $base_url: $base_url = '';

  2. 从您的请求中删除帖子字段。

Edit我将你的代码移出类,因为我没有其余的代码并对其进行了修改。下面的代码对我来说运行完美。如果这些更改对您不起作用,我建议您的错误出在不同的函数中。

<?php


function getTopTracks()
{
  $base_url = 'http://ws.audioscrobbler.com/2.0/?user=bachya&period=&api_key=8066d2ebfbf1e1a8d1c32c84cf65c91c&method=user.getTopTracks';
  $options = array_merge(array(
    'user' => 'bachya',
    'period' => NULL,
    'api_key' => 'xxxxx...', // obfuscated, obviously
  ));

  $options['method'] = 'user.getTopTracks';

  // Initialize cURL request and set parameters
  $ch = curl_init($base_url);
  curl_setopt_array($ch, array(
    CURLOPT_URL            => $base_url,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_USERAGENT      => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
  ));

  $results = curl_exec($ch);
  return $results;
}

echo getTopTracks();

?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP cURL 错误:“服务器回复为空” 的相关文章

  • PHP 7.4 已弃用 get_magic_quotes_gpc 函数替代

    我遇到了我的旧代码之一正在使用的情况get magic quotes gpc 最新版本已弃用PHP 版本 7 4 目前 我有这样的事情 添加斜杠 return get magic quotes gpc addslashes string s
  • 如何将 PHP 数组中的值插入到 MySQL 表中?

    我正在创建一个注册表单 其中包含姓名 电子邮件和电话号码字段 为了检查用户输入的有效性 我有一个函数validate input 返回一个数组 arr包含用户输入的输入 如果用户输入有效 arr然后传递给一个单独的函数 该函数将值插入arr
  • Laravel 无法连接 Oracle

    我在用着耶吉拉 laravel oci8 https github com yajra laravel oci8用于 Oracle 与 Laravel 的连接 但我无法从客户端 PC 连接到 Oracle 服务器 showing this
  • 在产品页面上显示最近浏览过的产品

    magento 当前的默认功能是在类别页面的右侧显示最近查看的产品 现在我想在产品页面底部显示相同的内容 使用的 phtml 文件在位置命名为 frontend base default template reports product v
  • PHP 类扩展字符串变量

    是否可以声明一个类并让它扩展一个变量 class Child extends parentClass 是的 它是通过 eval 实现的 但不建议这样做
  • 如何使用curl将多个参数传递给cron作业?

    我正在运行两个 cron 作业 这个执行没有问题 curl sS http example com cronjob php days 1 但这根本不运行 curl sS http example com cronjob php days 1
  • 在 PHP Codeigniter 中向 form_submit 添加一个类

    我正在尝试在 PHP Codeigniter 中向 form submit 添加一个类 我正在使用以下代码 attributes1 array class gt btn btn danger echo form submit loginSu
  • Paypal PDT交易ID有效期

    当我尝试使用交易 ID 检索付款信息时 我从 paypal PDT 收到错误 4003 虽然我这里有一个类似的线程 贝宝 PDT 错误 4003 https stackoverflow com questions 8521800 paypa
  • Codeigniter:将 sess_match_ip 设置为 FALSE 是否仍然安全

    我正在开发一个网站 来自某些国家 地区的访问者面临 codeigniter 缓存系统的问题 缓存在一两个请求后被删除 经过深入调查后 我将 sess match ip 和 sess match useragent 设置为 FALSE 现在一
  • PHP:限制 foreach() 语句? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何限制 foreach 语句 假设我只希望它运行前 2 个 eaches 或其他什么 方法有很多 一种是使用计数器 i 0 foreac
  • Google PageSpeed Insights API 无法正常工作 [PHP]

    我是 PHP 的初学者 所以也许有人可以帮助解决这个问题 我的网络应用程序显示 Google PageInsights API 错误 这是代码 我尝试将版本更改为 v2 但仍然不起作用 public function getPageSpee
  • Laravel/PHP - 从子类返回/重定向

    这是我的子控制器 class VolunteersController extends BaseController public function index this gt checkForRoles admin list some s
  • 回退到正则表达式中字符串的开头

    是否可以让正则表达式退回到字符串的开头并再次开始匹配 这就是我问的原因 给定下面的字符串 我想捕获子字符串black red blue and green按照该顺序 无论主题字符串中出现的顺序如何 并且仅当所有子字符串都存在于主题字符串中时
  • 从 mysql 检索数据并通过电子邮件发送

    我有一个 php 页面 它显示 mysql 数据库中每个用户的课程表数据 如下所示 result mysql query sql echo table border 0 thead tr th Class Link th th Studen
  • php 日期函数和 Carbon 哪个更快?

    Carbon 是 DateTime 的简单 PHP API 扩展 我想知道我们可以通过 Composer 安装 Carbon 来使用日期时间函数 php 日期时间函数和 Carbon 哪个更快 我对您的评论做了一些测试 比较了 DateTi
  • 清理 php 中的句子

    标题可能听起来很奇怪 但我有点尝试设置这个 preg replace 来处理文本区域的混乱写入者 它必须 如果有感叹号 则不应连续出现另一个感叹号 如果有 则逗号胜出 并且必须是 当昏迷前有一个 空格时 应将其减少到零 该句子不能以逗号开头
  • 从数据库结果生成多维数组的递归函数

    我正在编写一个函数 它接受页面 类别数组 来自平面数据库结果 并根据父 ID 生成嵌套页面 类别项目数组 我想递归地执行此操作 以便可以完成任何级别的嵌套 例如 我在一个查询中获取所有页面 这就是数据库表的样子 id parent id t
  • Smarty 3 如何与 Zend Framework 2 一起使用?

    我很久以前就使用过 PHP5 目前正在尝试刷新我的知识 并通过 Zend Framework 2 和 Smarty 3 的知识来增强它 以实现一个可能的项目 我目前正在尝试弄清楚如何使用 Smarty 3 作为 Zend Framework
  • 如何创建一个每次调用公共方法时都会调用的方法?

    如何创建一个每次调用公共方法时都会调用的方法 您也可以说这是一个后方法调用挂钩 我当前的代码
  • CodeIgniter 2.1.0 的会话库中是否存在任何已知错误?为什么我会被踢出去? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在开发

随机推荐

  • PHP 中的整数四舍五入到最接近的 5 的倍数

    搜索将数字四舍五入到最接近的 5 倍数的函数 22 gt 20 23 gt 25 40 gt 40 46 gt 45 48 gt 50 等等 尝试过这个总是返回更高的值 5 ceil n 5 Use round 代替ceil 5 round
  • Laravel:任务调度[并行]

    我有多项任务需要每隔一两个小时完成一次 所有这些都已通过 Laravel 使用以下命令作为 cron 作业进行安排 schedule gt command email notifications1 gt cron 15 schedule g
  • 如何在package.json中使用环境变量

    因为我们不希望项目代码中包含敏感数据 包括 package json 文件 所以在我看来 使用环境变量将是一个合理的选择 示例 package json dependencies accounting 0 4 0 async 1 4 2 m
  • JavaScript 中的 For..In 循环 - 键值对

    我想知道是否有办法做类似 PHP 的事情foreachJavaScript 中的循环 我正在寻找的功能类似于这个 PHP 片段 foreach data as key gt value 我正在看JSfor in循环 但似乎没有办法指定as
  • dyld:未加载库:@rpath/libswiftCore.dylib /未找到图像

    我正在从 xcode 到我的 iOS 设备运行我的应用程序 并且在 iOS 设备上出现此屏幕和黑屏 控制台文本 dyld Library not loaded rpath libswiftCore dylib Referenced from
  • 如何设置(组合)表中的两个主键

    对于一个小型的销售相关应用程序 我们使用逻辑数据模型设计数据库 上台转换成实体模型 在SQL Server Management Studio Express中创建表时 根据我们的逻辑数据模型 我们需要组合两个属性来形成唯一的id 是否可以
  • 什么是协程?

    什么是协程 它们与并发有何关系 协程和并发在很大程度上是正交的 协程是一种通用控制结构 流量控制在两个不同的例程之间协作传递而不返回 Python 中的 yield 语句就是一个很好的例子 它创建一个协程 当遇到 yield 时 函数的当前
  • 我如何知道我的 ansible 使用的是哪个版本的 Jinja2?

    我尝试使用pip list and pip freeze没有成功 这可能是显而易见的事情 但到目前为止我还无法找到它 将此文件拖放到 action plugins jin ver py from ansible plugins action
  • python 在哪里查找 Windows 上由 ctypes.cdll. 打开的 dll?

    恐怕我在互联网上找不到这个问题的简单答案 所以也许将来会因为这个问题而找到一个简单的答案 我正在使用 pywiiuse 它是 Windows 上 C wiiuse 库的 python 包装器 我已经获得了几个简单的 C 示例 只需将 dll
  • 是否可以使字母间距相对于字体大小并正确继承?

    我的问题与此基本相同 但将 line height 替换为 letter spacing 当继承相对行高时 它与元素的字体大小无关 为什么 我如何使其相对 我的用例是这样的 body font size 18px letter spacin
  • SQLite 与 EF Code First

    在我成功地将 SQLite 与 NHibernate 结合使用之后 我很高兴使用它来通过 Entity Framework Code First 进行测试 如果您有一些示例连接字符串并设置演示 那就太好了 可以为我忙碌的一天节省一些时间 多
  • 检索 R 中特定单元格的行名和列名

    因此 如果我有一个如下所示的数据框 A B C rowname1 4 5 4 3 2 rowname2 3 23 9 如何让 R 给出包含特定数字的行 列的名称 即如果我给出值 3 它会返回 rowname2 A 假设没有重复项 您可以使用
  • C# 委托未绑定到实例?

    有没有一种方法可以存储委托而不将其绑定到对象 就像使用 MethodInfo 一样 现在我正在存储一个 MethodInfo 这样我就可以给它一个对象来调用该方法 但我更愿意让它成为一名代表 就像有一个属性告诉 net 第一个参数是 thi
  • 使用 VBA 连接到 MS Access 中的 Web 服务

    是否可以通过 VBA 连接到 Web 服务 例如发送 HTTP 请求 in微软访问 例如 用户单击表单上的按钮 然后将 HTTP 请求发送到 Web 服务 该服务以OK 以前有人这样做过吗 注意 VBA 而不是 VB NET 这是我在 Ac
  • 将多维 PHP 数组转换为 javascript 数组

    我正在尝试使用 JSON 编码器将 PHP 多维数组转换为 javascript 数组 当我执行 var dump 时 我的 php 数组如下所示 array size 2 Key gt string a length 1 Value gt
  • Spring Boot:如何使用 WebClient 而不是 RestTemplate 来执行非阻塞和异步调用

    我有一个使用 Springboot Resttemplate 的 springboot 项目 我们已经从 1 5 3 迁移到 springboot 2 0 1 我们正在尝试使 其余部分通过使用 WebClient 异步调用 我们曾经使用 R
  • 如何在 Clang 中以字符串形式获取函数定义/签名?

    假设我有 CXCursor 左右 如何使用 Clang Libclang 将函数的签名 或至少整个定义 作为字符串获取 我认为可以通过使用光标的范围以某种方式获得该定义 但我真的不知道如何 使用什么函数 您可以使用这个简单的代码来获取函数的
  • C# 线程间通信

    我正在使用 NET 3 5 并试图解决一个问题 不是一个超级线程专家 请忍受我 我有一个 Windows 服务 它有一个始终运行的非常密集的进程 我已将此进程放到一个单独的线程上 以便我的服务的主线程可以处理操作任务 即服务审核周期 处理配
  • Apache Derby - 检查数据库是否已创建?

    将 Apache Derby 与 Java J2ME 但我不认为这有什么区别 一起使用 是否有任何方法可以检查数据库是否已存在并包含表 据我所知 除了很少的解决办法之外 没有任何解决办法 不像 MySQL 我们有 IF EXIST 的设施
  • PHP cURL 错误:“服务器回复为空”

    我有一个类函数与 RESTful API 接口Last FM 其目的是为我的用户获取最新的曲目 这里是 private static base url http ws audioscrobbler com 2 0 public static