如何将 API 连接到我的 Lazarus/Delphi 程序?

问题描述 投票:0回答:1

在我的程序的形式上,有

TIdHTTP
TButton
组件:

procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  AudioFilePath: string;
  AudioFileContent: TMemoryStream;

begin
  AudioFilePath := 'speech.wav'; // Path to the file to which the audio file will be saved

  HTTP := TIdHTTP.Create(nil);
  AudioFileContent := TMemoryStream.Create;
  try
    // Send a request to the VoiceRSS API and receive an audio file
    HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello, world!',AudioFileContent);

    // Save the audio file to disk
    AudioFileContent.SaveToFile(AudioFilePath);
  finally
    AudioFileContent.Free;
    HTTP.Free;
  end;
end;

当我刚刚输入此地址(但使用我的 API 密钥)时:

http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello, world!

它会自动开始下载机器人说“你好,世界”的音频文件。但是,当我运行我的程序时,它显示一个错误:

没什么......

delphi indy freepascal lazarus
1个回答
0
投票

您发布的文本包含空格字符,需要编码为

%20
,例如:

HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello,%20world!', AudioFileContent);

网络浏览器会为您处理这个问题,但您必须在代码中手动完成。您可以使用 Indy 的

TIdURI
类来帮助您,例如:

HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=' + TIdURI.ParamsEncode('Hello, world!'), AudioFileContent);
© www.soinside.com 2019 - 2024. All rights reserved.