在库中使用volley库

时间:2015-05-07 04:56:45

标签: android jar android-volley

我想创建一个库,以减少我在每个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; ?!?!?*/
    }
}

但是如何回复?!因为如果服务器忙或停机或者响应有点晚,应用程序中的开发人员会变为空!(我猜)。

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

1 个答案:

答案 0 :(得分:1)

定义界面,如

public interface OntaskCompleted {

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

现在您的活动应该实现此接口,您必须覆盖这些方法。

现在你的Volley课就这样做了。

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

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

现在您的活动将获得错误或成功的结果。 希望它可以帮到你。