android - অ্যান্ড্রয়েড: ভলির ব্যবহার পদ্ধতি থেকে কীভাবে অ্যাসিঙ্ক জেএসএনওবজেক্ট ফেরত পাবেন?



json android-asynctask (1)

আমি নিম্নলিখিত উপায়ে JSON অবজেক্টটি ফিরে পাওয়ার চেষ্টা করছি:

JSONObject jsonObject = http.makeRequest("GET", "https://api.twitter.com/1.1/search/tweets.json", null);

সমস্ত HTTP অনুরোধগুলি প্রক্রিয়া করার জন্য সাধারণ পদ্ধতি অনুসরণ করা হচ্ছে is

public void makeRequest(String method, String url, Array params) {

    // Request a string response from the provided URL.
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(getRequestMethod(method),
            url,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    processResponse(Constants.Global.SUCCESS, null, response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    try {
                        mStatusCode = error.networkResponse.statusCode;
                        VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage());
                        Logger.e(error.getMessage());
                    } catch (Exception e) {
                        Logger.e(e.getMessage());
                        mStatusCode = 0;
                    }
                    Logger.e(mStatusCode.toString());
                    processResponse(Constants.Global.ERROR, mStatusCode, null);
                }
            });
    // Add tag to request for bulk cancelling
    //jsonObjReq.setTag()
    queue.add(jsonObjReq);
}

এবং জেএসএন ফলাফল প্রক্রিয়া করার পদ্ধতিটি নিম্নলিখিত:

private JSONObject processResponse(String resultState, Integer httpStatusCode, JSONObject responseData) {
        try {
            // First check that result state is error or the success
            if (resultState.equals(Constants.Global.SUCCESS)) {
                Logger.i("Response is success");
                Logger.i(responseData.toString());
                //TODO: ADD SUCCESS OBJECT CREATION
            }
            if (resultState.equals(Constants.Global.ERROR)) {
                Logger.e("Response is error");
                //TODO: ADD ERROR HANDLING AND ERROR OBJECT CREATION
            }

        } catch(Exception e) {
            e.printStackTrace();
            Logger.e(e.getMessage());
        }
        return responseData;
    }

আমি জিজ্ঞাসা করতে চাই যে আমি কীভাবে অসম্পূর্ণ উপায়ে JSONObject (প্রথম কোড স্নিপেট) পেতে পারি?

সমস্ত অনুরোধ ভলির লাইব্রেরি ব্যবহার করে প্রক্রিয়া করা হয়।

যে কোনও পরামর্শের জন্য অনেক ধন্যবাদ।


আপনার মন্তব্যের জন্য

আমি মনে করি যে অ্যাসিঙ্কটি ভল্লি স্বয়ংক্রিয়ভাবে সরবরাহ করেছে। সুতরাং আমার প্রথম স্নিপেটে জেএসএন ডেটা কীভাবে পাবেন তা আমার জানতে হবে

আইএমও, আপনার প্রথম স্নিপেটের পরিবর্তে, আপনি নিম্নলিখিত উপায়ে চেষ্টা করতে পারেন (অবশ্যই আপনি JSONArray অনুরোধটিকে JSONArray অনুরোধের মাধ্যমে প্রতিস্থাপন করতে পারেন):

VolleyResponseListener listener = new VolleyResponseListener() {
            @Override
            public void onError(String message) {
                // do something...
            }

            @Override
            public void onResponse(Object response) {
                // do something...
            }
        };

makeJsonArrayRequest(context, Request.Method.POST, url, requestBody, listener);

makeJsonArrayRequest বডি নিম্নলিখিত হিসাবে হতে পারে:

    public void makeJsonArrayRequest(Context context, int method, String url, String requestBody, final VolleyResponseListener listener) {
        JSONObject jsonRequest = null;        
        try {
            ...
            if (requestBody != null) {
                jsonRequest = new JSONObject(requestBody);
            }
            ...
        } catch (JSONException e) {
            e.printStackTrace();
        }

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(method, url, jsonRequest, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray jsonArray) {
                listener.onResponse(jsonArray);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                listener.onError(error.toString());
            }
        });

        // Access the RequestQueue through singleton class.
        MySingleton.getInstance(context).addToRequestQueue(jsonArrayRequest);
    }

VolleyResponseListener ইন্টারফেসটি নিম্নলিখিত হিসাবে:

public interface VolleyResponseListener {
    void onError(String message);

    void onResponse(Object response);
}




android-volley