2012-03-30 10 views
0

私はlocalhostのデータベースでクエリを実行し、JSONオブジェクトをアンドロイドでクライアントに送信しようとしています。私は自分のコードで何が問題なのか分からなかった。だから、ある人はこの点について私を助けてください。AndroidのJSON例外

私のPHPコードは、JSONオブジェクトを送信する場所です。 PHPコード

正常に実行されたクエリ..

$row=mysql_fetch_array($result1); 


    $email=$row['EM']; 
    $pass=$row['PASS']; 

    $post=array("email"=>$email, "pass"=>$pass); 
    $posts[] = array("post"=>$post); 
    //echo "SUCCESS"; 
    header('Content-type: application/json'); 

    echo json_encode(array("posts"=>$posts)); 

とAndroid側で私は以下のコードをまし、一部上記

HttpResponse response = doPost(url, kvPairs); 
     String responseBody=response.toString(); 
     String temp = EntityUtils.toString(response.getEntity()); 
     if (temp.compareTo("SUCCESS")==0) 
     { 
      Toast.makeText(this, "Working", Toast.LENGTH_LONG).show(); 
     } 

実行..コードの下 はJSON例外

 JSONObject json = new JSONObject(responseBody); 
    JSONArray jArray = json.getJSONArray("posts"); 
    no_of_obj=jArray.length(); 
    nemail=new String[no_of_obj]; 
    npass=new String[no_of_obj]; 
    for (int i = 0; i < jArray.length(); i++) { 
     JSONObject e = jArray.getJSONObject(i); 
     String s = e.getString("post"); 
     JSONObject jObject = new JSONObject(s); 
     Toast.makeText(context,jObject.getString("email")+":"+jObject.getString("pass") , duration).show(); 
     nemail[i]=jObject.getString("email"); 
     npass[i]=jObject.getString("pass"); 

    } 

は、私が見ることができるログの猫ではスロー:JSON文字列

+1

をお試しくださいログにJSONオブジェクトを出力して、ここにも投稿しますか?場合によっては、最初に余分な情報(例えば、PHPの警告など)がある場合、APIから返された実際のデータを見るまではわかりません。 –

+0

Javaの最後のブロックと関連する例外からの行#は役に立ちます –

+0

これはあなたのURLに何らかの問題があることを意味します。ブラウザのURLをチェックして、あなたが得るものを見てください。それ以外の場合は、 'doPost(url、kvpair)'メソッドに問題があります。 – BBdev

答えて

0
.... "{" で始まる必要があります

Sの配列には「ポスト」キーがないのでおそらくあなたは、この

String s = e.getString("post"); 

を行うことはできませんあなたが与えているtringsは、...

String s = e.has("post")?e.getString("post"):null; 

、これをやってみて、その次の行にJSONObjectを作成する前に、ヌルチェックを保つ。..

0

でき、この

$posts['data'] = $post; 
//echo "SUCCESS"; 
header('Content-type: application/json'); 
echo json_encode($posts);