2017-07-06 6 views
0

Ich bin um dieses Problem, es bereits vorbei wie 2 Stunden, grundsätzlich versuche ich, einige Daten von meinem Server zu bekommen und die Volley Callback nie ausgeführt werden.Volley erhalten Anfrage nicht Server

Basicly Ich habe eine Schnittstelle definiert, um die Volley Anfrage zu bearbeiten, so dass für die getRequest ich habe so etwas wie dies:

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){ 

     } 
    } 

dann auf meine Tätigkeit intialize i den Rückruf und übergeben Sie die Funktionen zu ihm:

IResult mResultCallbackGET = null; 

onCreate ich die loadPhotos nennen

loadPhotoDetails(); 

dann das Verfahren ist wie folgt:

private void loadPhotoDetails() { 
     final String urlDetails = connectionTxt + "/fotos/" + fotoId; 
     loadPhotoInfo(); 
     mVolleyService = new VolleyService(mResultCallbackGET,this); 
     mVolleyService.getDataObjectVolley(GETREQUEST,urlDetails,token); 
    } 

die 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"); 
      } 
     }; 
    } 

euch sehen, dass ich log 4 hallo Welten haben kann, es kommt nur der erste, es trifft nie der Server, irgendwelche Hilfe dabei?

Dank viel

Antwort

0

Mein Vorschlag ist in den loadPhotoDetails() -Methode alle HTTP-Anforderungen verarbeiten. Der Code wird kürzer sein. Sie können eine CONSTANTS-Datei erstellen, um connectionTxt und andere Konstanten zu verarbeiten. (Siehe Beispiel unten)

// -------------------------------------- ------------------

private void loadPhotoDetails() (String fotoId) {

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, 
      connectionTxt + "/fotos/" + fotoId, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      try{ 
       if (response.has("Ratings")) { 
        JSONArray ratings = response.getJSONArray("Ratings"); 

        String source = null; 
        String value = null; 
        if (ratings.length() > 0) { 

         JSONObject mRatings = ratings.getJSONObject(ratings.length() - 1); 
         source = mRatings.getString("Source"); 
         value = mRatings.getString("Value"); 
         rating.setText(source + " : " + value); 

        }else { 
         rating.setText("Ratings: N/A"); 
        } 

        path.setText(response.getString("image")); 
        lat.setText(response.getString("lat")); 
        lon.setText(response.getString("lon")); 
        alt.setText(response.getString("altitude")); 
        hasFlower.setText(response.getBoolean("hasFlower")); 
        hasLeaf.setText(response.getBoolean("hasLeaf")); 
        hasThorn.setText(response.getBoolean("hasThorn")); 
        hasFruit.setText(response.getBoolean("hasFruit")); 
        flowerColor.setText(response.getString("flowerColor")); 
        time.setText(response.getString("date")); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("Error:", error.getMessage()); 
     } 
    }); 

    queue.add(jsonObjectRequest); 

} 

// --------- --------------------------------