【问题标题】:Soundcloud API Upload suddenly throwing code 422Soundcloud API Upload 突然抛出代码 422
【发布时间】:2015-11-17 09:36:57
【问题描述】:

使用 PHP Soundcloud API 已有一段时间了,它运行良好。我用来创建轨道数组的代码是(并且一直是):

$track = json_decode($client->post('tracks', array(
  'track[title]' => $title,
  'track[asset_data]' => $filename,
  'track[description]' => $desc,
  'track[genre]' => "Podcast",
  'track[artwork_data]' => $image
)));

而且它一直运行良好 - 直到今天早上,当我使用自制的 PHP 工具上传曲目时收到此错误消息:

致命错误:未捕获的异常“Services_Soundcloud_Invalid_Http_Response_Code_Exception”带有消息“请求的 URL 以 HTTP 代码 422 响应。”在 /home/csicon/public_html/PodcastAuthor/lib/Soundcloud.php:943 堆栈跟踪:#0 /home/csicon/public_html/PodcastAuthor/lib/Soundcloud.php(621): Services_Soundcloud->_request('https://api.sou. ..', Array) #1 /home/csicon/public_html/PodcastAuthor/2-publish.php(52): Services_Soundcloud->post('tracks', Array) #2 {main} 在 /home/csicon/public_html 中抛出/PodcastAuthor/lib/Soundcloud.php 第 943 行

现在,我不是新手,并且知道 HTTP 代码 422 是什么,所以我检查了 $title、$filename、$desc 和 $image 的内容。它们按顺序排列:

Geekdays #274: 2015-11-17

@/home/csicon/public_html/PodcastAuthor/uploads/g274.mp3

Snowden, the FBI and the Oxford Dictionary are getting blamed for things that they may or may not have done. Also; the air you're breathing might be killing you. This, and so much more, on today's episode of Geekdays.

@/home/csicon/public_html/wp-content/uploads/2014/10/geekdays-600x600.png

检查所有路径(到 mp3 和图像),所使用的字符集没有任何问题,而且以前都可以使用。这里可能发生了什么?我被难住了。

更新!原来我的虚拟主机已经将他们的 PHP 环境从 5.4 升级到 5.6,这就是它的问题。在这种情况下,5.4 和 5.6 之间的哪些变化可能导致了这种情况?

【问题讨论】:

  • 有没有 php 的文档?在 soundcloud 他们只有 python、ruby 和 js。
  • 我使用的是用 PHP 编写的API Wrapper for SoundCloud。我的代码没有任何变化,但是,昨天晚上我上传了一个曲目时它工作了,然后当我上传另一首曲目时它今天不起作用。
  • 你能显示 $track 变量吗?在 json_decode 之后
  • 不幸的是,422 来自该行的 $client->post 部分。但是,我发送到它的数组看起来像这样:
  • array(5) { ["track[title]"]=> string(25) "Geekdays #274: 2015-11-17" ["track[asset_data]"]=> string( 56) "@/home/csicon/public_html/PodcastAuthor/uploads/g274.mp3" ["track[description]"]=> string(181) "爱德华·斯诺登,牛津词典甚至联邦调查局。他们都在责备他们可能做或可能没有做的事情。另外,你认为那是你呼吸的空气吗? ["track[genre]"]=> string(7) "Podcast" ["track[artwork_data]"]=> string(73) "@/home/csicon/public_html/wp-content/uploads/2014/10/ geekdays-600x600.png" }

标签: php soundcloud


【解决方案1】:

原来我的虚拟主机已经将他们的 PHP 环境从 5.4 升级到了 5.6,这就是破坏它的原因。在这种情况下,5.4 和 5.6 之间的哪些变化可能导致了这种情况?

处理 cURL 文件上传的方式已更改。

CURLOPT_SAFE_UPLOAD 从 PHP 5.6 开始默认设置为 true,这意味着文件上传不再可能使用 @-file 路径语法,但 CURLFile 应该用于文件上传.

尝试使用setCurlOptions 方法将CURLOPT_SAFE_UPLOAD 设置为false

【讨论】:

  • 谢谢。我已经升级到 curl-file 分支,但没有帮助。我是否需要以不同的方式构建我的变量/数组?
  • 是的,也没有帮助,奇怪的是。然而,当我去寻找原版的another fork of the curl-file branch 时,终于成功了!仍在试图找出导致它开始工作的两者之间的不同之处......
【解决方案2】:

当我更改为 curl-file 分支的 sebdesign/php-soundcloud 版本时,神奇地开始工作。但是,不确定为什么“正常”的 curl 文件分支不起作用。

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多