我正在尝试使用Android来提取以下REST网址但我收到以下错误,
11-23 12:12:32.749:E / AndroidRuntime(709):引起: java.lang.IllegalArgumentException:查询中的非法字符 指数121: http://xxxxxxxxxxxxxxxxx.com/add.php?key=xxxxxxxxxxxx&type=Timbuktu&description=Africa&latitude=16.776767&longitude=-3.006361&private= { “标记”: “测试”}
当我在浏览器中调用相同的URL时,它可以工作。任何帮助都会得到证实!
答案 0 :(得分:4)
首先对您的网址进行编码,仅对参与者进行编码..
URLEncoder.encode("key=xxxx&type=Timbuktu&description=Africa&latitude=16.776767&longitude=-3.006361&private={\"tag\":\"test\"}", "UTF-8")
答案 1 :(得分:2)
您需要对网址的参数进行网址编码,如下所示:
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;
答案 2 :(得分:1)
浏览器是智能的,并以UTF-8编码URL。我想你也应该在客户端做到这一点。
URLEncoder.encode(url, "UTF-8");