java.lang.IllegalArgumentException:如果查询非法字符 [英] java.lang.IllegalArgumentException: Illegal character in query

查看:151
本文介绍了java.lang.IllegalArgumentException:如果查询非法字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这似乎是此错误信息已经贴了很多,但我一直没能拿出正确的答案。

It seems like this error message has been posted a lot, but I have not been able to come up with the proper answer.

我下面<一href="http://mobile.tutsplus.com/tutorials/android/android-sdk-working-with-google-maps-google-places-integration/"相对=nofollow>这个教程,我不能让谷歌地方信息显示在我的屏幕上。我一直在寻找在LogCat中,看到这样的:

I am following this tutorial and I can't get the Google Places Info to show up on my screen. I was looking at the LogCat and saw this:

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)

在code我是从字面上完全相同的教程提供,除在URL我的谷歌API密钥,我的地图密钥在清单中,我的主要活动被称为ShowMapActivity。

The code I have is literally the EXACT same as provided in the tutorial, with the exception of my Google API key in the URL, my Maps key in the manifest, and my main activity is called ShowMapActivity.

我不知道这是为什么不工作,但我认为这事做的URL,其​​产生的第一个错误。

I'm not sure why this isn't working, but I think it has something to do with the URL, which produces the first error.

与此同时,我看不到任何无效字符的URL,当我复制/粘贴LogCat中的网址进入我的浏览器,它会返回一个不错的JSON文件。

At the same time, I can't see any invalid character in the URL, and when I copy/paste the URL from LogCat into my browser, it returns a nice JSON file.

有什么想法/可以修复?

Any thoughts/possible fixes?

感谢。

链接,以我的文件

推荐答案

所以,我最终更改我的code:

So I ended up changing my code from:

    String placesSearchStr="https://maps.googleapis.com/maps/api/place/nearbysearch/"
    +"json?location="
    +String.valueOf(lat)
    +","
    +String.valueOf(lng)
    +"&radius=5000&sensor=true"
    +"&types=food|bar|church|museum|art_gallery"
    +"&key=AIzaSyDdMnQpqT9pr-k6VhwesT1OBAg_qkvflxU";

String latVal=String.valueOf(lat);
String lngVal=String.valueOf(lng);
String url;
try {
        url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="
        +URLEncoder.encode(latVal, "UTF-8")
        +","
        +URLEncoder.encode(lngVal, "UTF-8")
        +"&radius="
        +URLEncoder.encode("5000", "UTF-8")
        +"&sensor="
        +URLEncoder.encode("true", "UTF-8")
        +"&types="
        +URLEncoder.encode("food|bar|church|museum|art_gallery", "UTF-8")
        +"&key="
        +URLEncoder.encode("AIzaSyDdMnQpqT9pr-k6VhwesT1OBAg_qkvflxU", "UTF-8");
        new GetPlaces().execute(url);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这解决了我的问题。

And this solved my problem.

这篇关于java.lang.IllegalArgumentException:如果查询非法字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆