android 中的 Volley 不再有效...?
Volley in android does not work anymore...?
我正在尝试更清楚地编写一些 android 代码(避免 in-class 定义)但我偶然发现了 volley 描述的问题,例如here,好像不行!首先,这是我的代码片段:
public class ServiceStock {
public Context context;
private class ResponseListener implements Response.Listener<String> {
ResponseListener() {
Log.d("test Listener", "constructor");
}
@Override
public void onResponse(String response) {
Log.d("test Listener:", response);
}
}
private class ErrListener implements Response.ErrorListener {
public Context context;
ErrListener(Context context) {
this.context = context;
Log.d("error Listener", "constructor");
}
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(this.context, "Did not work", Toast.LENGTH_SHORT).show();
Log.d("error Listener", "error");
}
}
public ServiceStock(Context context)
{
this.context = context;
}
public String getCurrentStockPrice(String symbol) {
Log.d("ServiceTest", "method_start");
RequestQueue queue = Volley.newRequestQueue(this.context);
String url = "http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=sl1";
ResponseListener listener = new ResponseListener();
ErrListener error = new ErrListener(this.context);
StringRequest stringRequest = new StringRequest(
Request.Method.GET,
url,
listener,
error
);
Log.d("ServiceTest", "method_end");
return "OK";
}
}
如你所见,我正在写入日志文件。我看到以下输出:
0 20:01:54.215 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_start
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/test Listener: constructor
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/error Listener: constructor
12-10 20:01:54.238 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_end
但没有别的。使用 listener
或 error
实例时,我没有看到日志输出。但是必须使用其中的一个!!至少当我使用 in-class 定义时它是有效的。但是现在 onResponse
和 onErrorResponse
都没有被调用!?那么发生了什么以及如何解决它?
P.S.: 也许有人对如何使 context
处理更复杂一点有想法?哈...
Volley in android does not work anymore…?
如果实施正确,它确实有效。
这是您的代码中的问题。
您只是在创建 stringRequest 但并未执行!!甚至没有将其添加到 requestQueue?
RequestQueue queue = Volley.newRequestQueue(this/*ActivityContext*/);
queue.add(stringRequest); // you need something like this.
这是给你的简单请求tutorial link。
这是人们在 volley 实现中更常见的错误。
您错过了将 stringRequest 添加到队列中
queue.add(stringRequest);
我正在尝试更清楚地编写一些 android 代码(避免 in-class 定义)但我偶然发现了 volley 描述的问题,例如here,好像不行!首先,这是我的代码片段:
public class ServiceStock {
public Context context;
private class ResponseListener implements Response.Listener<String> {
ResponseListener() {
Log.d("test Listener", "constructor");
}
@Override
public void onResponse(String response) {
Log.d("test Listener:", response);
}
}
private class ErrListener implements Response.ErrorListener {
public Context context;
ErrListener(Context context) {
this.context = context;
Log.d("error Listener", "constructor");
}
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(this.context, "Did not work", Toast.LENGTH_SHORT).show();
Log.d("error Listener", "error");
}
}
public ServiceStock(Context context)
{
this.context = context;
}
public String getCurrentStockPrice(String symbol) {
Log.d("ServiceTest", "method_start");
RequestQueue queue = Volley.newRequestQueue(this.context);
String url = "http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=sl1";
ResponseListener listener = new ResponseListener();
ErrListener error = new ErrListener(this.context);
StringRequest stringRequest = new StringRequest(
Request.Method.GET,
url,
listener,
error
);
Log.d("ServiceTest", "method_end");
return "OK";
}
}
如你所见,我正在写入日志文件。我看到以下输出:
0 20:01:54.215 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_start
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/test Listener: constructor
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/error Listener: constructor
12-10 20:01:54.238 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_end
但没有别的。使用 listener
或 error
实例时,我没有看到日志输出。但是必须使用其中的一个!!至少当我使用 in-class 定义时它是有效的。但是现在 onResponse
和 onErrorResponse
都没有被调用!?那么发生了什么以及如何解决它?
P.S.: 也许有人对如何使 context
处理更复杂一点有想法?哈...
Volley in android does not work anymore…?
如果实施正确,它确实有效。
这是您的代码中的问题。
您只是在创建 stringRequest 但并未执行!!甚至没有将其添加到 requestQueue?
RequestQueue queue = Volley.newRequestQueue(this/*ActivityContext*/);
queue.add(stringRequest); // you need something like this.
这是给你的简单请求tutorial link。
这是人们在 volley 实现中更常见的错误。
您错过了将 stringRequest 添加到队列中
queue.add(stringRequest);