java.lang.IllegalArgumentException: Illegal character in Abfrage
Es scheint, wie diese Fehlermeldung gepostet wurde, eine Menge, aber ich habe nicht in der Lage zu kommen mit der richtigen Antwort.
Ich bin nach diese tutorial und ich kann nicht den Google Places-Info zu zeigen, bis auf mein Bildschirm. Ich schaute mir das LogCat und sah dies:
09-20 02:01:32.278: W/System.err(19832): java.lang.IllegalArgumentException: Illegal character in query at index 127: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=41.6997688,-86.2406069&radius=1000&sensor=true&types=food|bar|store|museum|art_gallery&key=AIzaSyDdMnQpqT9pr-k6VhwesT1OBAg_qkvflxU
09-20 02:01:32.278: W/System.err(19832): at java.net.URI.create(URI.java:727)
09-20 02:01:32.278: W/System.err(19832): at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
09-20 02:01:32.278: W/System.err(19832): at com.mbau.miniproject2.ShowMapActivity$GetPlaces.doInBackground(ShowMapActivity.java:145)
09-20 02:01:32.278: W/System.err(19832): at com.mbau.miniproject2.ShowMapActivity$GetPlaces.doInBackground(ShowMapActivity.java:1)
09-20 02:01:32.278: W/System.err(19832): at android.os.AsyncTask$2.call(AsyncTask.java:287)
09-20 02:01:32.278: W/System.err(19832): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
09-20 02:01:32.278: W/System.err(19832): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
09-20 02:01:32.278: W/System.err(19832): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
09-20 02:01:32.278: W/System.err(19832): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
09-20 02:01:32.278: W/System.err(19832): at java.lang.Thread.run(Thread.java:841)
09-20 02:01:32.388: W/System.err(19832): org.json.JSONException: End of input at character 0 of
09-20 02:01:32.388: W/System.err(19832): at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
09-20 02:01:32.388: W/System.err(19832): at org.json.JSONTokener.nextValue(JSONTokener.java:97)
09-20 02:01:32.388: W/System.err(19832): at org.json.JSONObject.<init>(JSONObject.java:154)
09-20 02:01:32.388: W/System.err(19832): at org.json.JSONObject.<init>(JSONObject.java:171)
09-20 02:01:32.388: W/System.err(19832): at com.mbau.miniproject2.ShowMapActivity$GetPlaces.onPostExecute(ShowMapActivity.java:187)
09-20 02:01:32.388: W/System.err(19832): at com.mbau.miniproject2.ShowMapActivity$GetPlaces.onPostExecute(ShowMapActivity.java:1)
09-20 02:01:32.388: W/System.err(19832): at android.os.AsyncTask.finish(AsyncTask.java:631)
09-20 02:01:32.388: W/System.err(19832): at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-20 02:01:32.388: W/System.err(19832): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-20 02:01:32.388: W/System.err(19832): at android.os.Handler.dispatchMessage(Handler.java:99)
09-20 02:01:32.388: W/System.err(19832): at android.os.Looper.loop(Looper.java:137)
09-20 02:01:32.388: W/System.err(19832): at android.app.ActivityThread.main(ActivityThread.java:5276)
09-20 02:01:32.388: W/System.err(19832): at java.lang.reflect.Method.invokeNative(Native Method)
09-20 02:01:32.388: W/System.err(19832): at java.lang.reflect.Method.invoke(Method.java:525)
09-20 02:01:32.388: W/System.err(19832): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
09-20 02:01:32.388: W/System.err(19832): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
09-20 02:01:32.388: W/System.err(19832): at dalvik.system.NativeStart.main(Native Method)
Den code, den ich habe, ist buchstäblich GENAU das gleiche wie in dem tutorial, mit Ausnahme von meinem Google-API-key in der URL, meine Maps key im manifest, und meine Haupttätigkeit ist genannt ShowMapActivity.
Ich bin mir nicht sicher, warum dies nicht funktioniert, aber ich denke es hat etwas zu tun mit der URL, die produziert die ersten Fehler.
Zur gleichen Zeit, ich kann nicht sehen, ungültige Zeichen in der URL, und wenn ich copy/paste die URL von LogCat in meinem browser, es gibt einen schönen JSON-Datei.
Irgendwelche Gedanken/Lösungsansätze?
Dank.
Link auf meine Dateien
Was ist in Zeile 187 in deinem code? Die Quelle, die Referenz ist nur ~155 Zeilen.
Hinzugefügt mein code über eine dropbox .zip-Datei, line 187, in meinem code ist: Orte = new MarkerOptions[placesArray.length()]; //marker-Optionen für jeden Ort zurückgegeben
Zu klären mehr: Linie 187 instanziiert die MarkerOptions erstellte array mit der Länge der zurückgegebenen "Ergebnis" - array.
dropbox.com/s/s30kgdt6srtaspz/MiniProject2.zip
InformationsquelleAutor user2060214 | 2013-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
So landete ich ändern mein code aus:
:
Und das ist mein problem gelöst.
Hast
new String("", "UTF-8")
nicht arbeiten oder sowas?Hatte das gleiche Problem, danke.
Gleiche tut, das gleiche problem. Vielen Dank!
meinen Tag gerettet danke.
InformationsquelleAutor user2060214
Wenn Sie möchten, verwenden Sie eine Java-Bibliothek, mit der diese HTTP-details für Sie und ermöglicht Ihnen die Interaktion mit der Google Places API durch Java-Methoden und Objekte, können Sie versuchen, Ritzel (Offenlegung: ich bin der Entwickler).
Ich arbeite auch auf einem Android-library-Projekt, das unter anderem auch Radlader, Adapter und widgets für die Verwendung mit der Google Places API.
Beachten Sie, dass bei Verwendung von Kettenrädern bei Android, werden Sie wahrscheinlich wollen, verwenden ProGuard für release-builds, Streifen aus dem nicht verwendeten code in die Abhängigkeit von Bibliotheken (siehe POM Abhängigkeiten).
InformationsquelleAutor pushbit
Versuchen Sie es mit
String.valueOf()
beim hinzufügen der lat & lang. Es kann verlassen werden extra Sachen drin, die verursacht Sie Probleme, wenn Sie versuchen zu analysieren, der wird immer abgeschnitten werden, wenn die Zeichenfolge angezeigt wird.InformationsquelleAutor Jon