如何利用 AsyncTask 处理异步 RestRequests

How to utilize AsyncTask for handling asynchronous RestRequests

我想通过 android 应用程序访问在线 API。为此,我编写了易于访问的函数来通过 android Volley 包发送请求。但是,当我尝试将通过发送请求收到的值分配给 TextView 时,应用程序会立即显示 0。我意识到这可能是因为该函数将对象处理为 "null" 因为响应尚未到达并且我需要使用 AsyncTasks 来正确处理此问题但是 Android Studio 的开发人员指南没有真的帮了我太多,因为绝对 100% 诚实地对你说,我不是软件工程师,在这一点上我完全迷路了。

下面是一些关于如何访问 API 的代码:

    org.json.JSONObject makeRequest(String URL, String method, String[] headers){
    int reqType;

    switch(method.toUpperCase()){
        case "GET":
            reqType = Request.Method.GET;
            break;
        case "DELETE":
            reqType = Request.Method.DELETE;
            break;
        default:
            return null;
    }
    Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>(){
        @Override
        public void onResponse(JSONObject Response){
            result = Response;
        }
    };
    Response.ErrorListener err = new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            result = null;
        }
    };
    JsonObjectRequest req = new JsonObjectRequest(reqType, URL, null, listener, err){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String>  params = new HashMap<String, String>();
            params.put(headers[0], headers[1]);

            return params;
        }
    };
    ;
    rQ_volley.add(req);

    return result;
}

还有一些关于我在哪里访问上述方法的代码

    JSONArray koordTargetArr = rBuild.makeRequestArr("https://nominatim.openstreetmap.org/search?q="+target+"&format=json&polygon=1&addressdetails=1", "get",headersLonLat);
    if(koordTargetArr != null) {
        JSONObject koordTargetOBJ = koordTargetArr.getJSONObject(0);
        koordTarget = koordTargetOBJ.getString("lon").concat(",").concat(koordTargetOBJ.getString("lat"));
    }
    else return 0;

如果您能在我实现 AsyncTask 的位置以及如何构建 AsyncTask 等方面提供帮助,我将不胜感激。如果有帮助的话,我在 Node.js 的异步库中有经验。

编辑: 这不是 的副本我已经知道如何发送 HTTP 请求,我不知道如何使用 android AsyncTask,HTTP 请求不是这个问题的主题。

您是否考虑过使用 Retrofit

它将处理、构造和反序列化您所有的网络需求,而无需使用 AsyncTask + 自定义实用程序函数。