代码之家  ›  专栏  ›  技术社区  ›  Francesco Galgani

使用代号1管理http错误代码

  •  0
  • Francesco Galgani  · 技术社区  · 5 年前

    我写道:

    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();
                    }
                }
            });
    

    onFail 未调用回调。取而代之的是 Dialog 出现。我假设默认情况下会调用此对话框 addNetworkErrorListener 代码 init() . 然而。。。我不能(也不想)禁用默认设置 addNetworkErrorListener

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

    谢谢你

    0 回复  |  直到 5 年前
        1
  •  1
  •   Shai Almog    5 年前

    您需要显式地捕获错误代码回调,因为回调的格式可能与主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
                });
    
    }