我尝试使用< 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();
}
});
在我的例子中,我从接口中删除了@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