首页 > 解决方案 > Exoplayer 是否支持通过 POST METHOD 播放视频?

问题描述

我有一个 API 可以从我们的服务器检索视频,该 API 使用 POST 方法,并且需要对 Headers 进行授权,对 body 参数进行 deviceInfo。

例子。

URL:https
://myapi.com/api/pretty_video.mp4 正文:deviceInfo = 设备信息
HEADER:授权:承载“令牌”
方法:POST

我找不到任何使用 POST 方法从 URL 播放视频的ExoPlayer示例。

标签: javaandroidexoplayer2.x

解决方案


解决了!

我通过使用 OkHttp 解决了它。

DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    DataSource.Factory dataSourceFactory = new OkHttpDataSourceFactory(new OkHttpClient
            .Builder()
            .connectTimeout(1, TimeUnit.MINUTES)
            .readTimeout(1,TimeUnit.MINUTES)
            .retryOnConnectionFailure(false)
            .addInterceptor(new Interceptor() {
              @Override
              public Response intercept(Chain chain) throws IOException {

                MediaType CONTENT_TYPE = MediaType.parse("application/x-www-form-urlencoded");
                RequestBody requestBody = RequestBody.create(CONTENT_TYPE,"deviceinfo=12345");

                Request request = chain.request().newBuilder()
                        .post(requestBody) .  // HERE IS THE KEY
                        .addHeader("Accept", "application/json")
                        .addHeader("Authorization", "Bearer " + auth)
                        .addHeader("Content-Type", "application/x-www-form-urlencoded")
                        .build();

                return chain.proceed(request);
              }
            })
            .build(), Util.getUserAgent(context,context.getString(R.string.app_name)), defaultBandwidthMeter);


推荐阅读