用两个单词填充依赖的微调器

时间:2013-08-09 08:03:47

标签: php android json

我遇到了从PHP填充的微调器问题。我有MySQL表与城市和类。我需要从特定的学校上课。城市的PHP看起来像这样:

{"lista":[{"City":"Beograd"},{"City":"Novi Sad"},{"City":"Kragujevac"}]}

当我尝试使用“Novi Sad”中的类填充微调器时,我在android中遇到错误

08-09 09:53:37.762: E/Fail 1(28592): java.lang.IllegalArgumentException: Illegal character in query at index 50: http://192.168.1.2/test/test.php?city=Novi%20Sad

如果我在本地主机中呼叫http://192.168.1.2/test/test.php?grad=Novi%20Sad,我将获得{"lista":[{"Class":"matematika"},{"Class":"informatika"}]}。如果我试图用城市填充微调器:Beograd或Kragujevac一切正常。我猜这个问题在诺维和萨德之间的空白处。

用于从spinner1(城市)填充spinner2的网址:

str_grad1=spinner1.getSelectedItem().toString();
String url="http://192.168.1.2/test/test.php?grad="+str_grad1;  

编辑:这里也是PHP脚本

$con = mysqli_connect($host, $user, $pwd, $db);

if(mysqli_connect_errno($con)) {
    die("Failed to connect to MySQL: " . mysqli_connect_error());
} 

$sql = "SELECT Predmet FROM lista where City='".$_GET['grad']."'";

$result = mysqli_query($con, $sql);

$rows = array();

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

        $rows[] = $row; 
    }

mysqli_close($con);

$arr = array_flip(array_map('serialize', $rows));
$lista = array_map('unserialize', array_flip($arr));
echo json_encode((object) array('lista' => array_values($lista)));

1 个答案:

答案 0 :(得分:2)

不应该像{/ 1}那样编码str_grad1

String url="http://192.168.1.2/test/test.php?grad=" + URLEncoder.encode( str_grad1 );

而不是:

String url="http://192.168.1.2/test/test.php?grad="+str_grad1;