1
我試圖使用Volley作爲DBA層來調用hadles JSON對象的webservice。由於此圖層位於活動和另一個服務圖層下方,因此似乎無法正常工作。我會盡力解釋我的設置:在另一個類中獲取Android Volley響應
MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ProductService productService = new ProductService();
productService.getProduct();
}
ProductService.java:
public void getProduct() {
JsonObjectRequest req = new JsonObjectRequest("http://echo.jsontest.com/name/Milk/price/1.23/", null, createMyReqSuccessListener(), createMyReqErrorListener());
ApplicationController.getInstance().addToRequestQueue(req);
}
private Response.Listener<JSONObject> createMyReqSuccessListener() {
return new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("response", response.toString());
}
};
}
private Response.ErrorListener createMyReqErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
return;
}
};
}
我希望是非常明顯的。 最後,我想從一個活動中使用ProductService :: getProduct(),並在一個變量中使用來自webservice的實際JSON響應,我可以稍後使用它。
然而,此刻,行
Log.v("response", response.toString());
甚至不執行。我究竟做錯了什麼?
你得到一個錯誤的反應呢?你沒有'Log',所以你可能不會注意到。 –
沒有錯誤信息。代碼只是沒有執行。我的感覺是,由於這個類的工作流程,該偵聽器沒有被發現和執行。我真的很想知道當我在Volley中執行queue.add(req)時會發生什麼。 – Zorrocaesar
我幾乎逐字複製了你的代碼,它第一次爲我工作。 [來源](https://gist.github.com/adamsp/6bdc3bcc1c663e63b14d)。我能看到的唯一情況是,您沒有正確地向隊列添加請求,或者在清單中缺少Internet權限。 –