【问题标题】:How can I get a JSON status that my server is busy?如何获取服务器繁忙的 JSON 状态?
【发布时间】:2017-12-08 05:58:11
【问题描述】:

我的 JSON 代码:

Response.Listener<String> responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonResponse = new JSONObject(response);
                            int success = jsonResponse.getInt("success");

                            if (success == 0) {

                            }
                            if (success == 1) { 

                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                };
                nRequest nRequest = new nRequest(edtTextReg.getText().toString(), responseListener);
                RequestQueue queue = Volley.newRequestQueue(login.this);
                queue.add(nRequest);

如何找到让 JSON 显示“服务器正忙”状态的方法?忙碌意味着例如:成千上万的人使用我的服务器。

【问题讨论】:

  • 那个忙的定义基本没用。您的代码如何知道有多少人在使用服务器?
  • 这是我的问题。我怎样才能找到一种方法让 JSON 给我状态“服务器正忙”
  • 为什么需要状态?你的标准是什么?
  • 我需要这个来进行登录请求。用户需要一个 Toast,表明服务器正忙
  • 如果您的服务器真的被撞了,您可能需要在 HTTP 服务器级别执行此操作并配置 JSON“错误文档”。

标签: java android json


【解决方案1】:

如果您的服务器很忙,您不希望它花时间渲染 JSON,此外,如果您考虑服务器负载,您最终可能会将您的应用程序置于负载均衡器之后,而这些通常对 JSON 一无所知。

处理这种情况的正确方法是解析正确的HTTP状态码,通常是429,见this answer

要访问状态代码,您的 onResponse 应如下所示:

@Override    
public void onSuccess(int statusCode, String content) {
}

【讨论】:

    【解决方案2】:

    服务器过载的Http状态码是503。

    503 - 服务不可用 503 状态码最常出现在非常繁忙的服务器上,它表示服务器由于服务器过载而无法完成请求。

    所以你的代码应该是这样的:

                    @Override
    
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonResponse = new JSONObject(response);
    
                     int status = jsonResponse.getStatusLine().getStatusCode();
                          int success = jsonResponse.getInt("success");
                            if (status == 503) {
                              // 
                            }
    
                            if (success == 0) {
    
                            }
                            if (success == 1) { 
    
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                };
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多