2013-02-21 2 views
0

Salut, j'utilise php pour connecter mon application android à mysql mais la méthode get ne transmet pas la valeur au fichier php.AsyncHttpClient ne passant pas la valeur à php

Ceci est mon code.

private void executeAjaxRequest(){ 

     String url = mDataUrl+"?request="+mRequest+"&outlet_id="+mOutletID; 
     Log.v("url",url); 
     System.out.println("This is StoreActivity " +url); 

     AsyncHttpClient httpclient = new AsyncHttpClient(); 
     httpclient.get(url, new AsyncHttpResponseHandler() { 
     @Override 
     public void onSuccess(String response) { 
      setOutletData(response); 
      Log.i("TAG",response); 
     } 
     }); 
    } 

Il devrait passer le outletid et mrequest au fichier php pour obtenir les données de la base de données.

Pouvez-vous me dire où je me trompe?

error_reporting(0); 

    //$url = $_GET['url']; 
    $mR = $_GET["mRequest"]; 
    $mOid = $_GET["mOutletID"]; 
    //$mloc = $_GET['mLocation']; 
    //connect to the db 
    //echo $mOid; 
    $user = "root"; 
    $pswd = ""; 
    $db = "recommendations_db"; 
    $host = "localhost"; 
    $conn = mysql_connect($host, $user, $pswd); 
    mysql_select_db($db); 
    //if($mR == 'outlets' && $mloc = 'all'){ 
    $query = "SELECT outlet_id,outlet_name,outlet_location,outlet_image FROM outlets WHERE outlet_id = '$mOid'"; 
    $result = mysql_query($query) or die("Unable to execute query because : " . mysql_error()); 
    //echo $result ." ". $mOid; 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $query2 = "SELECT a.item_id,a.item_name,a.item_image FROM items a,outlets b,recommendations c WHERE a.item_id = c.item_id AND b.outlet_id = c.outlet_id AND b.outlet_id = ".$row['outlet_id']; 
     $row['recommended_products']=array(); 

     $result2 = mysql_query($query2) or die("Unable to execute query because : " . mysql_error()); 
     //echo $row; 
     while($row2 = mysql_fetch_assoc($result2)){ 
      $row['recommended_products'][]=$row2; 
      //echo $row; 
     } 

     $output[] = $row; 
    } 
    print(json_encode($output)); 
    mysql_close($conn); 

Répondre

0

Êtes-vous en mesure de récupérer le request et outletid sur votre serveur? Si la requête est en effet et que la requête SQL doit être encodée en url, cela évitera de tronquer l'URL avec des caractères potentiellement "dangereux".

Vous devez remplacer la méthode onFailure par AsyncHttpResponseHandler pour gérer toute erreur éventuelle. Vous pouvez également essayer d'utiliser le RequestParams au lieu de placer les paramètres et leurs valeurs dans l'URL. Vous pouvez les utiliser comme suit:

RequestParams params = new RequestParams(); 
    params.put("request", "mRequest"); 
    params.put("outlet_id", "mOutletID"); 
    AsyncHttpClient client = new AsyncHttpClient(); 
    client.get("URL", params, new AsyncHttpResponseHandler() { 

     @Override 
     public void onFailure(Throwable arg0, String arg1) { 
      // Handle the error 
     } 

     @Override 
     public void onSuccess(String arg0) { 
      // Do stuff with the result 
     } 
    }); 
Questions connexes