gpt4 book ai didi

java - 如何利用 AsyncTask 处理异步 RestRequest

转载 作者:行者123 更新时间:2023-12-02 04:04:42 24 4
gpt4 key购买 nike

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

以下是有关如何访问 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 异步库的经验。

编辑:这不是 How to use java.net.URLConnection to fire and handle HTTP requests 的重复项我已经知道如何发送HTTP请求,我不知道如何使用android AsyncTask,HTTP请求不是这个问题的主题。

最佳答案

您是否考虑过使用Retrofit

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

关于java - 如何利用 AsyncTask 处理异步 RestRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com