gpt4 book ai didi

Perl WebService::Soundcloud - 如何在上传到 Soundcloud 时传递音轨参数

转载 作者:行者123 更新时间:2023-12-04 16:11:03 24 4
gpt4 key购买 nike

我正在尝试使用 WebService::Soundcloud 将声音上传到 soundcloud .到目前为止,我已经能够按照 the WebService::Soundcloud documentation 提供的示例发出几个 GET/POST 请求。 .

但是,我在任何地方都找不到关于如何在传递所需参数(即 track,以及在其中,asset_data、title 等)的同时进行上传的体面示例。我想知道我是否应该发送多部分消息。

任何例子将不胜感激!

此外,这是我迄今为止尝试过的:在验证并获得有效的 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 的影响。

您引用的文档有 演示内容需要编码为 JSON 然后传递给库的示例。我没有使用过这个 api 但它可能是使用 的一个简单案例encode_json 根据示例。我将仅展示一个与您的手动编码等效的示例:

use JSON qw(encode_json);

my $asset_data = "ascii, quotes (\"'), non-ascii: \000\001\002\003";

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, quotes (\"'), non-ascii: \u0000\u0001\u0002\u0003","title":"My test title"}}

键/值在那里被重新排序,但它是等效的 JSON。

关于Perl WebService::Soundcloud - 如何在上传到 Soundcloud 时传递音轨参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16456156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com