0

我正在尝试使用 Android 执行以下 REST url,但出现以下错误,

11-23 12:12:32.749:E/AndroidRuntime(709):原因:java.lang.IllegalArgumentException:索引 121 处的查询中存在非法字符: http: //xxxxxxxxxxxxxxxxxx.com/add.php ?key=xxxxxxxxxxxx&type=Timbuktu&description =非洲&latitude=16.776767&longitude=-3.006361&private= {"tag":"test"}

当我在浏览器中调用相同的 URL 时,它可以工作。任何帮助将不胜感激!

4

3 回答 3

4

首先编码您的网址,仅参数部分..

 URLEncoder.encode("key=xxxx&type=Timbuktu&description=Africa&latitude=16.776767&longitude=-3.006361&private={\"tag\":\"test\"}", "UTF-8")
于 2012-11-23T12:23:47.657 回答
2

您需要对 URL 的参数进行 URL 编码,如下所示:

String privateParamValue = URLEncoder.encode("{\"tag\":\"test\"}", "UTF-8");
String url = "http://xxxx.com/add.php?key=xxxx&type=Timbuktu&description=Africa&latitude=16.776767&longitude=-3.006361&private=" + privateParamValue;
于 2012-11-23T12:23:35.870 回答
1

浏览器是智能的,并将 URL 编码为 UTF-8。我认为你也应该在客户端这样做。

URLEncoder.encode(url, "UTF-8");
于 2012-11-23T12:23:53.190 回答