【发布时间】:2013-05-03 14:20:03
【问题描述】:
我正在尝试使用 WebService::Soundcloud 将声音上传到 soundcloud。到目前为止,我已经能够按照the WebService::Soundcloud documentation 提供的示例发出几个 GET/POST 请求。
但是,我在任何地方都找不到一个像样的示例,说明如何在传递所需参数(即轨道)以及其中的资产数据、标题等时进行上传。我想知道我是否应该发送多部分消息。
任何示例将不胜感激!
此外,这是我迄今为止所尝试的:在验证并获得有效的 WebService::Soundcloud 实例之后。
GET my $response = $scloud->get( '/me/tracks' );
PUT my $response = $scloud->put( '/me/tracks/91576621', JSON::to_json({track=>{title=>"My test title",description=>"My test description"}}) );
POST my $file = '/home/ski/track1.mp3';
my $asset_data = File::Slurp::read_file( $file, binmode => ':raw' );
my $response = $scloud->post('/me/tracks', '{"track":{"title":"My test title","asset_data":"'.$asset_data.'"}}' );
这失败了,“请求实体包含无效的字节序列。请传输有效的 UTF-8”
【问题讨论】:
-
到目前为止您所做的任何代码示例(例如 GET/POST 请求)?
-
在验证并获得有效的
WebService::Soundcloud实例之后。 GETmy $response = $scloud->get( '/me/tracks' );PUTmy $response = $scloud->put( '/me/tracks/91576621', JSON::to_json({track=>{title=>"My test title",description=>"My test description"}}) );POSTmy $file = '/home/ski/track1.mp3'; my $asset_data = File::Slurp::read_file( $file, binmode => ':raw' ); my $response = $scloud->post('/me/tracks', '{"track":{"title":"My test title","asset_data":"'.$asset_data.'"}}' );失败并显示“请求实体包含无效的字节序列。请传输有效的 UTF-8” -
这是完整的错误信息,还是有更多信息?我不知道 Soundcloud API,也没有使用过
WebService::Soundcloud和JSON::to_json- 但问题可能出在JSON::to_json的语法上。您是否尝试过使用encode_json()代替 PUT 请求的WebService::Soundcloud文档? -
@thunk 这就是
$response->content()中的全部内容。我确实尝试过encode_json()以及我自己编写的 json 字符串。这可能不是问题,因为上面的PUT示例适用于JSON::to_json。 -
感谢您的回复!它必须在 perl 中,我正在做一个更大的项目,它完全是在 perl 中构建的。
标签: perl soundcloud