如何管理具有更高可读性的请求代码?

时间:2015-09-09 11:46:03

标签: java android http callback request

我希望找到一种更好的处理回应的方式,而不是我所工作的公司教授的方法。

我被教导使用通用的HttpClient,它使用volley来发送请求。客户端有一个静态方法,该方法将被赋予一个通用侦听器ResponseListener,当一个齐射响应通过时,它将对上下文进行回调。 ResponseListener将跟踪所有请求“类型”。这是给客户端的代码,以便上下文可以区分请求。

有没有其他方法可以跟踪所有请求代码而无需保留一个大目录类型的接口文件?当你超过100个请求时,看起来会变得非常压倒性。然后你为客户端的代码编写包装函数,它也会变得混乱。

HttpClient的

public static void doRequestString(final ResponseListener listener, final int type, final String url, final JSONObject postData) {
    // Request a string response
    StringRequest request = new StringRequest(Request.Method.GET, url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // Result handling
                listener.onRequestDone(type, response);
            }
        }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // Error handling
            System.out.println("Something went wrong!");
            error.printStackTrace();

        }
    });

    request.setTag(context);
    VolleyClient.getInstance(context).getRequestQueue().add(request);

}

监听

public interface ResponseListener
{
    int HELLO_REQUEST = 0;
    int GOODBYE_REQUEST = 1;
    // every other request numbered here, so they don't conflict

    void onRequestDone(int type, String response);
}

上下文

public void onRequestDone(int type, String response)
{
    switch(type) {
        case Response.Listener.HELLO_REQUEST:
            handleHello();
            break;
        case Response.Listener.GOODBYE_REQUEST:
            handleGoodbye();
            break;
    }
}

1 个答案:

答案 0 :(得分:0)

嗯,说实话,没有那么多选择。您现在正在集中处理您的回复。另一种选择是将请求类型剥离为每个请求都有一个监听器。这里的主要缺点是你会得到充满听众的代码。

我建议您尝试以适合您的用例的方式组合这两种方法。也许创建一个中间服务层,通过一些属性划分你的功能(例如逻辑上 - 所有用户请求组合在一起等),为每个服务公开一个监听器并在那里管理请求代码。这样你可以有一点模块化。