保存RequestQueue响应的最佳方法是什么?

时间:2016-03-23 19:12:34

标签: java php android

所有。第一次在这里发帖

无论如何,我编写了一个创建RequestQueue的Android方法,并通过PHP脚本向我的服务器发送请求以获取服务器时间。我有它的方式工作,但我几乎可以肯定它的陪审团操纵代码,必须有一个更好的方法来做到这一点。

底线:我想将onResponse 响应保存到我可以返回的字符串时间中(时间在更改为ArrayList之前是一个String。但是,它不会让我使用来自外部onResponse的字符串,除非它是最终的。当然,这意味着我无法将其更改为响应

我想我错了。也许有更好的方法从PHP脚本获得响应?

Android方法:

PING

PHP脚本:

    public static String getServerTime(Context c){
    //Make a final ArrayList that will hold response once received
    final ArrayList<String> time = new ArrayList<String>();
    //Set up the RequestQueue
    RequestQueue requestQueue = Volley.newRequestQueue(c);
    String requestUrl = c.getString(R.string.uploadServerUrl)+c.getString(R.string.serverRequestPath);
    Response.Listener responseListener = new Response.Listener<String>() { @Override public void onResponse(String response) { time.add(response.toString()); System.out.println("onResponse: "+response.toString());}};
    Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) {System.out.println("onErrorResponse: "+error.toString());}};
    StringRequest request = new StringRequest(Request.Method.POST, requestUrl, responseListener, errorListener){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> parameters = new HashMap<String, String>();
            parameters.put("option", "0");
            return parameters;
        }
    };
    RetryPolicy retryPolicy = new RetryPolicy(){
        @Override public int getCurrentTimeout() {
            return 50000;
        }
        @Override public int getCurrentRetryCount() {
            return 50000;
        }
        @Override public void retry(VolleyError error) throws VolleyError {}
    };
    request.setRetryPolicy(retryPolicy);
    requestQueue.add(request);
    return time.remove(0);
}

&GT;

0 个答案:

没有答案