在库中使用 volley 库

Using volley library inside a library

我想创建一个库来减少我在每个 android 项目上的重复网络工作,甚至将我的 jar 提供给其他开发人员使用我的方法进行网络通信。

所以我构建了这个:

import java.util.Map;
import org.json.JSONObject;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request.Method;
import com.android.volley.Request.Priority;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;

public class RequestResp {
    private final static String WEB_SERVICE_URL = "http://blabla/api";
    private final Priority priorityImmediatelly = Priority.IMMEDIATE;
    private final Priority priorityHigh = Priority.HIGH;
    private final Priority priorityNORMAL = Priority.NORMAL;
    private String tag_req_default = "tag_req_default";
    VolleyCustomRequest mVolleyCustomReq;
    DefaultRetryPolicy drp = new DefaultRetryPolicy(15000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);

    public /*JSONObject*/ void sendParamsAsHighPriority(Map<String, String> params) {

        mVolleyCustomReq = new VolleyCustomRequest(Method.POST,
                WEB_SERVICE_URL, params, new Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        if (response != null) {
                        }
                    }
                }, new ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(tag_req_default, error.getMessage());
                    }
                }) {

            @Override
            public Priority getPriority() {
                return priorityHigh;
            }

        };
        mVolleyCustomReq.setRetryPolicy(drp);
        VolleyController.getInstance().addToRequestQueue(mVolleyCustomReq,
                tag_req_default);
/*return response; ?!?!?*/
    }
}

但是如何return回应?!因为如果服务器繁忙或宕机或响应有点晚,开发人员在他们的应用程序中会得到 null!(我猜)。

如何制作这样的东西?!构建一个具有 class 的 jar 库,该库具有提供参数并在特定 URL 上发送它的方法,使用 volley 库?

一样定义接口
public interface OntaskCompleted {

    public void onSuccess(JSONObject response);
    public void onError(String message);
}

现在你的 activity 应该实现这个接口,你必须重写这些方法。

现在在你 Volley class 做这个。

 if (response != null) {
 ontaskCompleted.onSuccess(JSONObject);
                        }

 public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(tag_req_default, error.getMessage());
                        ontaskCompleted.onError( error.getMessage());
                                                }

现在您的 activity 将得到错误或成功的结果。 希望对你有帮助。