1

我写:

private RequestBuilder getPostRequest(String api) {
        return Rest.post(url + api)
                .jsonContent()
                .header("wsc-access-key", WowzaAccount.getAccessKey())
                .header("wsc-api-key", WowzaAccount.getRestKey());
    }
getPostRequest("live_streams").body(json).fetchAsJsonMap(new OnComplete<Response<Map>>() {
            @Override
            public void completed(Response<Map> v) {
                if (v.getResponseCode() == 201) {
                    // success
                    Map<String, Object> response = v.getResponseData();
                    name = (String) response.get("name");
                    id = (String) response.get("id");
                    connection_code = (String) response.get("connection_code");
                    Log.p("WowzaLiveStream -> (Code 201) Successfully created live stream with name " + name, Log.DEBUG);
                    onComplete.completed(instance);
                } else if (v.getResponseCode() == 401) {
                    Log.p("WowzaLiveStream -> (Code 401) Unauthorized, failed to create live stream with name " + params.name.get(), Log.DEBUG);
                    onFail.run();
                } else if (v.getResponseCode() == 422) {
                    Log.p("WowzaLiveStream -> (Code 422) Unprocessable Entity, failed to create live stream with name " + params.name.get(), Log.DEBUG);
                    onFail.run();
                } else {
                    Log.p("WowzaLiveStream -> Unknow response with code " + v.getResponseCode() + ", failed to create live stream with name " + params.name.get(), Log.DEBUG);
                    onFail.run();
                }
            }
        });

问题是当我收到 422 响应代码时,我的onFail回调没有被调用。而是Dialog出现了一个。我想这个对话框是addNetworkErrorListenerinit(). 但是...我不能(也不想)禁用默认addNetworkErrorListener代码,因为我正在编写一个新的 CN1Lib。相反,在这种情况下,我需要它,并且仅在这种情况下,不应该调用网络错误侦听器,而是应该运行我编写的失败回调。

在这种情况下,仅当 Internet 连接丢失时才调用网络错误侦听器更为合适。

谢谢

4

1 回答 1

1

您需要显式捕获错误代码回调,因为回调的格式可能与主 JSON 不同:

private RequestBuilder getPostRequest(String api) {
    return Rest.post(url + api)
            .jsonContent()
            .header("wsc-access-key", WowzaAccount.getAccessKey())
            .header("wsc-api-key", WowzaAccount.getRestKey())
            .onErrorCodeJSON(map -> { 
               // process error response
            });

}
于 2019-10-06T02:32:22.833 回答