我需要将视频上传到API,这就是我实施OKHTTP请求的方式:
private void makeRequest(Uri uri)
{
pr1.show();
try
{
String path = uri.toString();
Log.e("PATH",path);
File file = new File(new URI(path));
try {
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("video/mp4"), file))
.addFormDataPart("title", "damn")
.build();
Request request = new Request.Builder()
.url(URL)
.header("SproutVideo-Api-Key","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
.post(requestBody)
.build();
client.newCall(request)
.enqueue(new Callback() {
@Override
public void onFailure(final Call call, IOException e)
{
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
String res = response.body().string();
Log.e("SUCCESS",""+res);
pr1.dismiss();
}
});
} catch (Exception ex) {
// Handle the error
}
}
catch (Exception e){}
}
但是,我无法完成成功请求。
记录此行Log.e("PATH",path);
显示:
内容://com.android.providers.media.documents/document/video%3A75611
当我在这一行添加换行符:client.newCall(request)
并运行调试器时,应用程序不会在任何时候结束,所以我认为请求没有完成。可能是什么导致了这个?这是正确的实施方式吗?
答案 0 :(得分:0)
我不熟悉OkHTTP库,但有一点我注意到会导致问题的是视频字段应为source_video
,而不是file
{{3} }。
您可能还想在catch语句中添加一些日志记录,以查看是否有任何内容可能会以静默方式失败,因为您似乎忽略了任何潜在的失败。