当前位置: 首页 > 知识库问答 >
问题:

如何使用翻新发送音频文件

荆利
2023-03-14

我尝试使用< code >翻新发送音频文件,但是< code>ResponseBody总是为空,状态为< code>500内部服务器错误,我尝试了许多不同的方法,但是没有任何效果

邮递员截图:

身体

标题

我的客户:

    public class AudioClient {



    private static Retrofit retrofit = null;


    public static Retrofit getClient(Context context) {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(context.getString(R.string.base_url)).client(client)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }

}

addAudioComment方法:

@Multipart
@POST("api/Comment/AddSoundComment")
Call<AudioComment> addAudioComment(@Header("Authorization") String contentRange,
                                   @Part("referenceType") RequestBody ReferenceType,
                                   @Part("referenceId") RequestBody ReferenceID,
                                   @Part("parentId") RequestBody ParentID,
                                   @Part  MultipartBody.Part  AudioComment);

请求:

  File audioFile = new File(mRecordedFilePath);
        RequestBody reqFile = RequestBody.create(MediaType.parse("audio/*"), audioFile);
        audioPart = MultipartBody.Part.createFormData("AudioComment", audioFile.getName(), reqFile);
    Call<AudioComment> apiCall = service.addAudioComment(String.valueOf(SharedPreferencesHelper.getLogInToken(CommentsActivity.this)),
            reqRefType, reqRefId, reqParentId, audioPart);
    //apiCall =service.addAudioComment();
    apiCall.enqueue(new Callback<AudioComment>() {
        @Override
        public void onResponse(Call<AudioComment> call, Response<AudioComment> response) {
            Log.i("RETROFIT", "onResponse Called");

            AudioComment postResult = response.body();

        }

        @Override
        public void onFailure(Call<AudioComment> call, Throwable t) {
            String err = t.getMessage() == null ? "" : t.getMessage();

            showError(R.string.service_failure);
            Log.e("RETROFIT", err);
            setRefreshing(false);
            dismissProgress();
        }
    });

共有1个答案

吕向荣
2023-03-14

在我的例子中,我从接口中删除了@Multipart,并用@Body-RequestBody替换了@part。如下所示,第二个参数是音频文件。

public interface APIInterface {

    @POST(url)
    Call<String> postAudioAndGetResponse(@Header("Subscription-Key") String keyValue,
                                         @Body RequestBody requestBody,
                                         @Query("language") String language);
}

并且像这样调用上述方法

File file = new File(audioFileName);
RequestBody requestBody = RequestBody.create(MediaType.parse("audio/*"), file);

Call<String> str = apiInterface.postAudioAndGetResponse(speechSubscriptionKey, requestBody,"en-IN");

它成功了。希望它能帮助别人。:)

 类似资料:
  • 我使用相同的代码成功地发送了许多带有图像(jpg文件)的消息。我会尝试mp3、mp4、ogg和aac文件类型,但不起作用。 这是Twilio控制台中的错误消息: 错误-12300无效的内容类型Twilio无法处理提供的URL的内容类型。有关有效内容类型的更多信息,请参见Twilio标记XML文档。 消息Msg“试图检索MediaUrl返回了不受支持的内容类型。”

  • 我想让x人产生音频,在实时,从他们的麦克风。我想把那个音频组合成另一个提要。 我想在某种程度上更复杂地处理音频合并的方式,但现在我只想创建音频流并使用它们。

  • 问题是这个。我正在发送音乐文件。我一直收到错误消息422。由于这个原因,我似乎无法正确定位我的身体 和我的代码 并调用此方法 我还发现这个东西 通过Reform2将文件作为对象发送到服务器 在我看来,问题是该字段看起来像“音频[文件]” 谢谢你的帮助

  • 问题内容: 因此,大约一个月前,我问了一个有关超级代理和发送文件的问题,但没有任何反应。我仍然喜欢找出使用超级代理的方法。 我可以使用纯Ajax发送文件: 但是,当我在超级代理中尝试相同的操作时,没有任何效果: 谁能告诉我发生了什么事。 问题答案: 这应该工作。

  • 但是我将ffmpeg更新到了最新版本(ffmpeg version git-2012-06-16-809d71d),现在在这个版本中参数不起作用。 请告诉我如何使用将新音频添加到视频(不是混合)中。

  • 问题内容: 我需要使用Retrofit 2发布JSON对象。我的JSON对象是 {“ logTime”:“”,“ datas”:[{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” } ,{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” }]} 我尝试使用以下代码: A