2013-02-21 3 views
0

Привет, я использую php для подключения моего приложения Android к mysql, но метод get не передает значение в файл php.AsyncHttpClient не передаёт значение php

Это мой код.

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); 
     } 
     }); 
    } 

Он должен пройти outletid и mrequest в файл PHP, чтобы получить данные из базы данных.

Можете ли вы сказать мне, где я иду не так.

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); 

ответ

0

в состоянии восстановить request и outletid на сервере Вы? Если запрос действительно и SQL-запрос, он должен быть закодирован в URL-адресе, чтобы избежать усечения URL-адреса с потенциально «опасными» символами.

Вы должны переопределить метод onFailure от AsyncHttpResponseHandler для обработки любой возможной ошибки. Вы также можете попробовать использовать RequestParams вместо того, чтобы поместить параметры и их значения в URL. Вы можете использовать их так:

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 
     } 
    }); 
Смежные вопросы