【发布时间】:2016-04-01 12:50:25
【问题描述】:
我正在尝试将 cURL 命令转换为改造调用。 cURL 命令是:
curl -u {username}:{password} -X POST
--header "Content-Type: audio/wav"
--header "Transfer-Encoding: chunked"
--data-binary @{audiofile}.wav
"{url}" -i -v
我已经通过添加用户名和密码的 Base64 作为授权标头来转换 -u 命令。我还添加了另一个标题。然而,问题在于改造电话。 改造电话目前是:
@POST
@Headers({"Transfer-Encoding: chunked", "Content-Type: audio/wav"})
Call<Station> translateAudio(@Url String url, @Header("Authorization") String auth,
@Body RequestBody file);
使用 cURL 命令时,音频文件会在服务器上正确处理。但是,当我尝试改造电话时,我正在使用的服务出现错误。改造调用和 cURL 调用之间似乎存在差异。有谁知道有什么区别?凭据确实被接受,所以这不是问题。
【问题讨论】:
-
你收到什么样的错误?
-
@jonas.koeritz: 错误是:{ "code_description": "Bad Request", "code": 400, "error": "unable to transcode data stream audio/wav -> audio/ x-float-array " } 但是,这是特定于该服务的。也许它可以帮助搜索发送文件的区别。
-
如何创建
file对象? -
@jonas.koeritz:我使用 new File(Environment.getExternalStorage()+"/file.wav") 创建了我的文件对象。文件有效,应用有权读取文件。
-
问题的原因可能是改造将文件对象本身的二进制表示,而不是文件内容发送到服务器。