2

我在查询中遇到关键字组成问题。我需要进行一个查询,例如,在一个查询中按“spord doctor”或“doctors”或“medicine”进行搜索(&keywod="sport doctor"|"medicine"|"sport"|"doctor"。这个查询不起作用,但如何正确执行此操作)。我无法在一个查询中编写它。是否有任何解决方案如何做到这一点,因为在文档中我只看到一个示例,其中通过一个关键字或短语进行搜索。最后,我想做一个长查询,不同语言的“运动医生”在哪里。

我找到了解决方案。但它在浏览器 URL 栏中工作,而不是在应用程序中工作。我用管道“|” 作为查询中的 OR 语句:https ://maps.googleapis.com/maps/api/place/search/json?location=59.436347,24.752356&radius=34572.53586&keyword=spordiarst|sport&sensor=false&key=AIzaSyCEVB4rY2A_AEyJ5JeopxaGz4zqm47yLuY

但是如果我输入这样的内容,我的应用程序就会出错:

HttpUriRequest request = new HttpGet("https://maps.googleapis.com/maps/api/place/search/json?" + 
            "location=" + ((lat == 0 || lat == gpsLat) ? gpsLat : lat) + ","+ ((lon == 0 || lon == gpsLon) ? gpsLon : lon) +
            "&radius=" + radius +
            "&keyword=\"spordiarst\"|\"sport\"" +
            "&types=establishment" +
            "&sensor=false&" +
            "key=" + GOOGLE_MAPS_KEY);

错误:原因:java.lang.IllegalArgumentException:索引 127 处的查询中存在非法字符:https ://maps.googleapis.com/maps/api/place/search/json?location=59.435330809999996,24.7727237&radius=1404.114013671875&keyword= ” spordiarst"|"sport"&types=建立&sensor=false&key=这是我的钥匙

如何解决?如我所见,没有空格和特定符号,但它崩溃了。似乎是由于管道“|” 或双引号\"。

4

2 回答 2

1

您是否尝试过URLEncoding参数?

于 2012-10-31T14:01:43.507 回答
0
String types = "restaurant|food";
try {
     types = URLEncoder.encode(types, "UTF-8");
} catch (UnsupportedEncodingException e1) {
    // TODO Auto-generated catch block
     e1.printStackTrace();
}

使用此编码器使管道与 HttpGet 一起工作,否则您将收到 Illegar Character 异常

于 2013-06-28T18:47:36.077 回答