【发布时间】:2017-07-06 21:04:08
【问题描述】:
我已经解决了这个问题,它已经过去了大约 2 个小时,基本上我正在尝试从我的服务器获取一些数据,并且 volley 回调永远不会被执行。
基本上我定义了一个接口来处理凌空请求,所以对于 getRequest 我有这样的东西:
public void getDataObjectVolley(final String requestType, String url, final String token){
try {
RequestQueue queue = Volley.newRequestQueue(mContext);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url,null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if(mResultCallback != null)
mResultCallback.notifySuccess(requestType, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
public Map<String, String> getHeaders(){
Map<String, String> headers = new HashMap<>();
Log.d("tokenXX",token);
headers.put("x-access-token", token);
return headers;
}
};
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(30000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(jsonObjectRequest);
}catch(Exception e){
}
}
然后在我的活动中,我初始化回调并将函数传递给他:
IResult mResultCallbackGET = null;
onCreate 我调用 loadPhotos
loadPhotoDetails();
那么方法是这样的:
private void loadPhotoDetails() {
final String urlDetails = connectionTxt + "/fotos/" + fotoId;
loadPhotoInfo();
mVolleyService = new VolleyService(mResultCallbackGET,this);
mVolleyService.getDataObjectVolley(GETREQUEST,urlDetails,token);
}
loadPhotoInfo
void loadPhotoInfo(){
Log.d("HELLOWORLD","HELLOWOLD");
mResultCallbackGET = new IResult() {
@Override
public void notifySuccess(String requestType, JSONObject response) {
/*Log.d("HELLOWOLRD","HELLOWOLD1");
Log.d("resposta123",response.toString());
String path = null;
Double lat = null;
Double lon = null;
Double alt = null;
Boolean hasFlower = null;
Boolean hasLeaf = null;
Boolean hasThorn = null;
Boolean hasFruit = null;
String flowerColor = null;
String time = null;
try {
path = response.getString("image");
lat = response.getDouble("lat");
lon = response.getDouble("lon");
alt = response.getDouble("altitude");
hasFlower = response.getBoolean("hasFlower");
hasLeaf = response.getBoolean("hasLeaf");
hasThorn = response.getBoolean("hasThorn");
hasFruit = response.getBoolean("hasFruit");
flowerColor = response.getString("flowerColor");
time = response.getString("date");
} catch (JSONException e) {
e.printStackTrace();
}
photoDetails = new Photo(path,lat,lon,alt,time,hasFlower,hasLeaf,hasThorn,hasFruit,flowerColor);
Log.d("fruit12",String.valueOf(hasFlower));
Log.d("fruit12",String.valueOf(hasLeaf));
Log.d("fruit12",String.valueOf(hasThorn));
if(hasFruit){
hasFruitTxt.setText("Sim");
}
else{
Log.d("fruit","false");
hasFruitTxt.setText("Não");
}
if(photoDetails.getHasFlower()){
hasFlowerTxt.setText("Sim");
}
else{
hasFlowerTxt.setText("Não");
}
if(photoDetails.getHasThorns()){
hasThornsTxt.setText("Sim");
}
else{
hasThornsTxt.setText("Não");
}
if(photoDetails.getHasLeaf()){
hasLeafTxt.setText("Sim");
}
else{
hasLeafTxt.setText("Não");
}*/
Log.d("HELLOWOLRD","HELLOWOLD1");
}
@Override
public void notifySuccess(String requestType, JSONArray response) {
Log.d("HELLOWOLRD","HELLOWOLD2");
}
@Override
public void notifyError(String requestType, VolleyError error) {
Log.d("HELLOWOLRD","HELLOWOLD3");
}
};
}
你们可以看到我有 4 个 hello worlds 日志,它只是进入第一个,它从未命中服务器,对此有什么帮助吗?
非常感谢
【问题讨论】:
标签: java android http android-volley