2016-04-20 12 views
2

Ich nehme den foursquare Beispiel-Java-Code und die gleichen Beispielwerte von git und laufe in meiner lokalen Maschine, aber die folgende Ausnahme bekommen. Hier ist mein Code:fi.foyt.foursquare.api.FoursquareApiException: org.json.JSONException: JSONObject ["icon"] keine Zeichenkette

String ll = args.length > 0 ? args[0] : "44.3,37.2"; 

    try { 
     FourSquareSampleMain fourSquareSample = new FourSquareSampleMain(); 
     fourSquareSample.searchVenues(ll); 

    } catch (FoursquareApiException e) { 
     // TODO: Error handling 
     e.printStackTrace(); 
    } 
} 

public void searchVenues(String ll) throws FoursquareApiException { 
    // First we need a initialize FoursquareApi. 
    FoursquareApi foursquareApi = new FoursquareApi("CLIENT_ID", 
      "CLIENT_SECRET", null); 

    // After client has been initialized we can make queries. 
    Result<VenuesSearchResult> result = foursquareApi.venuesSearch(ll, null, null, null, null, null, null, null, 
      null, null, null, null, null); 

    if (result.getMeta().getCode() == 200) { 


     CompactVenue[] venueList = result.getResult().getVenues(); 
     System.out.println("Compact Venue List size : " + venueList.length); 
     // if query was ok we can finally we do something with the data 
     for (CompactVenue venue : venueList) { 
      // TODO: Do something we the data 
      System.out.println("Venue Name : " + venue.getName()); 
     } 
     System.out.println("End of IF Loop: "); 
    } else { 
     // TODO: Proper error handling 
     System.out.println("Error occured: "); 
     System.out.println(" code: " + result.getMeta().getCode()); 
     System.out.println(" type: " + result.getMeta().getErrorType()); 
     System.out.println(" detail: " + result.getMeta().getErrorDetail()); 
    } 
} 

Die Größe des venueList ist immer "0", aber wenn ich es debuggt, wirft es die folgenden Ausnahme:

„org.eclipse.debug.core .DebugException: com.sun.jdi.ClassNotLoadedException: Der Typ wurde beim Laden des Komponententyps des Arrays nicht geladen. "

Aber seltsam, wenn ich den Breiten- und Längenwert,

String ll = "-33.883056 , 151.216667";// latlong surry hills sydney 

geändert erhalte ich die folgende Ausnahme:

fi.foyt.foursquare.api.FoursquareApiException: org.json. JSONException: JSONObject ["icon"] keine Zeichenfolge. bei fi.foyt.foursquare.api.JSONFieldParser.parseEntity (JSONFieldParser.java:143) bei fi.foyt.foursquare.api.JSONFieldParser.parseValue (JSONFieldParser.java:194) bei fi.foyt.foursquare.api. JSONFieldParser.parseEntity (JSONFieldParser.java:141) bei fi.foyt.foursquare.api.JSONFieldParser.parseEntities (JSONFieldParser.java:57) bei fi.foyt.foursquare.api.FoursquareApi.venuesSearch (FoursquareApi.java:1017) bei FourSquareSampleMain.searchVenues (FourSquareSampleMain.java:57) bei FourSquareSampleMain.main (FourSquareSampleMain.java:43) verursacht durch: org.json.JSONException: JSONObject [ "icon"] kein String. bei org.json.JSONObject.getString (JSONObject.java:658) bei fi.foyt.foursquare.api.JSONFieldParser.parseValue (JSONFieldParser.java:202) bei fi.foyt.foursquare.api.JSONFieldParser.parseEntity (JSONFieldParser.java:141)

Was fehlt mir hier? bitte vorschlagen.

+0

gleiche Problem hilft hier ... –

+0

Eigentlich ist dieses Problem mit einem Objekt entweder Venues oder Items in der FourSquare-API, also haben wir beschlossen, ihre Endpunkte anstelle von API zu verwenden, da wir nicht genug Zeit haben, um sie zu erhöhen und zu überprüfen. Aber mit dem Endpunkt ist es für meine Implementierung. – Tamil

Antwort

1

Ich habe einen Workaround dafür gefunden. Es ist ein Patch, aber es funktioniert. Details:

  1. Info wurde von this post genommen, wo gleiche Problem wurde identifiziert und fest
  2. Werfen Sie einen Blick, dass das das Problem beheben diff: https://github.com/wallabyfinancial/foursquare-api-java/compare/master...ganchix:master
  3. kopieren diese drei rohe Klassen (Kategorie, GeoCodeFeature und Icon) als sie sind, und fügen Sie sie in Ihre porject unter dem Paket fi.foyt.foursquare.api.entities und das ist es

Anmerkung 1: wenn Sie Klassen (gleiches Paket und Klassennamen) in yur Projekt ersetzen, Der Clasloader verwendet Ihren statt der Klassen, die von der Jar-Abhängigkeit bereitgestellt werden, daher gibt es eine schnelle Lösung. habe ich das und es funktionierte wie ein Zauber

Anmerkung 2: Sobald der sdk aktualisiert wird, sollten Sie diesen Patch entfernen und aktualisieren Sie die sdk Abhängigkeit

Hope it

Verwandte Themen