简介

555

# 简介

二次开发接口用于控制播放盒或者获取播放盒的信息,使用协议为HTTP。所有的二次开发接口可分为八类:通用,网络,外设,节目,排程,云平台,接收卡,局域网安全。

# Basic认证

当播放盒开启局域网加密时,调用接口需要加上Basic认证。(局域网加密相关接口见第八类)

  • postman示例
    img
  • Java代码示例(Android平台OkHttp框架,其它方式请自行添加对应的Basic认证请求头)
String userName = "admin";
String password = "console";
String auth = "Basic " + android.util.Base64.encodeToString((userName + ":" + password)
        .getBytes("utf-8"), Base64.NO_WRAP);
Response response = new OkHttpClient().newCall(new Request.Builder()
        .post(requestBody)
        .url(url)
        .addHeader("Authorization", auth)
        .build()).execute();
  • bat命令 (假设用户名为admin密码为console)
curl -X PUT http://admin:console@192.168.42.129/api/adb

# 文档说明

1.请求体中的String类型数据输入需要加上双引号 " ",int类型不需要。
2.在播放盒外部发起请求,可以使用8989、80端口发起请求;在播放盒内部发起请求(例如开发一个APK安装到播放盒并调用接口、目标ip为localhost),请使用8989端口,80端口无法请求到服务器。
3.如需使用第七类接收卡相关接口,请勿打开LEDVISON或PlayerMaster或Ledupgrade时调用该系列接口(会抢占socket导致失败)。
4.Android APK开发请求接口示例: 在清单文件中添加网络请求权限

<uses-permission android:name="android.permission.INTERNET" />

在清单文件中app标签中添加属性,允许明文请求

android:usesCleartextTraffic="true"

发起请求

    HandlerThread handlerThread = new HandlerThread("worker");
    handlerThread.start();
    Handler handler = new Handler(handlerThread.getLooper());
    handler.post(this::request);

    private void request() {
        String TAG = "http request demo";
        String url = "http://localhost:8989/api/info.json";
        Request request = new Request.Builder()
                .get()
                .url(url)
                .addHeader("Content-Type", "application/json; charset=utf-8")
                .build();
        Response response;
        try {
            response = new OkHttpClient.Builder().build().newCall(request).execute();
            if (response != null) {
                Log.d(TAG, "request: code = " + response.code());
                ResponseBody body = response.body();
                if (body != null) {
                    Log.d(TAG, "request: body = \n"
                            + body.string());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }