以下是我处理http请求的类。我在新的Android项目中尝试了Volley Request而没有其他代码,请求得到了正确处理,我收到了我期望的结果。但出于某种原因,当我在我的工作项目中将此代码用作类时,它不会返回任何响应。
我调用请求的方式是:
HttpRequest request = new HttpRequest();
String url = "some-url";
String urlReturn = request.getFromURL(url, <ACTIVITY>.this);
其中<ACTIVITY>
是我调用请求的活动,而"some-url"
是一个返回数据字符串的网址。
public class HttpRequest {
String response_test = "";
public String getFromURL (String url, Context context) {
RequestQueue requestQueue = Volley.newRequestQueue(context);
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("response1", response);
response_test = "1";
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
Log.d("log2=", error.toString());
//requestQueue.stop();
}
});
// Add the request to the RequestQueue.
requestQueue.add(stringRequest);
requestQueue.start();
return response_test;
}
response_test
永远不会更改,因此永远不会调用onResponse
。我认为可能存在计时问题,但是当我为其添加循环以等待response_test
更改时,它会永远等待。知道可能是什么问题吗?在我如何称呼这门课程时,我可能忽略了什么?
任何帮助表示感谢。
答案 0 :(得分:0)
Volley是异步库。它可以在另一个线程上工作,当调用准备就绪时,它会执行onResponse中的代码。在这个例子中,你是在幻想地回归。检查logcat以查找它们应该存在的消息