Perl WebService :: Soundcloud – 如何在上传到Soundcloud时传
发布时间:2020-12-15 23:32:06 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用WebService :: Soundcloud将声音上传到soundcloud.到目前为止,我已经按照 the WebService::Soundcloud documentation提供的示例制作了几个GET / POST请求. 但是,我无法在传递所需参数(如track)时在任何地方找到一个体面的例子,其中包括asset_d
我正在尝试使用WebService :: Soundcloud将声音上传到soundcloud.到目前为止,我已经按照
the
WebService::Soundcloud documentation提供的示例制作了几个GET / POST请求.
但是,我无法在传递所需参数(如track)时在任何地方找到一个体面的例子,其中包括asset_data,title e.t.c.我想知道我是否应该发送多部分消息. 任何例子将不胜感激! 此外,这是我到目前为止所尝试的:在验证并获得有效的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” 解决方法
您手动提供的示例构造了JSON,但没有考虑文件内容的二进制特性,这意味着它不太可能工作.由于缺少转义/正确编码,它也容易受到滥用内容更改JSON的影响.
您引用的文档有一个put示例,演示了内容需要编码为JSON然后传递给库.我没有使用过这个api,但这可能是一个使用encode_json的简单例子.我只是展示一个与您的手动编码等效的示例: use JSON qw(encode_json); my $asset_data = "ascii,quotes ("'),non-ascii: 00 01 02 03"; my $content = encode_json({ track => { title => "My test title",asset_data => $asset_data}}); print $content . "n"; ### inspection of encoding 这表明JSON使用UTF-8表示来处理二进制数据: {"track":{"asset_data":"ascii,non-ascii: u0000u0001u0002u0003","title":"My test title"}} 键/值正在重新排序,但它等效于JSON. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |