2012-02-06 2 views
0

Это PHP-код, где я хочу использовать метод HttpPost в Android. Я хочу, чтобы проверить, что объект JSON отправляется вместе с методом пост является соответствие с современными данными в базе данныхКак отправить запрос HttpPost скрипту php на сервере

if(!isset($_POST['data'])) { 
    echo "FAIL1"; 
    return 'false'; 
} 

$jsonObject = $_POST['data']; 
$data = json_decode($jsonObject, true); 

if(!is_array($data)) { 
    print_r($data); 
    exit; 
    echo "FAIL2"; 
    return 'false'; 
} 

$UNIQUE_ID = $data['UNIQUE_ID']; 
$BAR_CODE = $data['BARCODE']; 
$BATCH_CODE = $data['BATCHCODE']; 

if(!isset($UNIQUE_ID) || trim($UNIQUE_ID) == '' || !isset($BAR_CODE) || trim($BAR_CODE) == '' || !isset($BATCH_CODE) || trim($BATCH_CODE) == '') { 
    echo "FAIL3"; 
    return 'false'; 
} 

$link = mysql_connect($db_server,$db_username,$db_pasword) or die("Can not connect to server $db_server."); 

mysql_select_db("drugverifier",$link); 

$query = "SELECT * FROM drugverifier where unique_id = $UNIQUE_ID AND bar_code = $BAR_CODE AND batch_code = $BATCH_CODE"; 
echo " TEST4"; 
$result = mysql_query($query,$link) or die("Can not able to run the query ' $query ' on server $db_server."); 
echo "TEST5"; 
if(mysql_num_rows($result) > 0){ 
    echo "SUCCESS6"; 
    echo 'true'; 
} 
else { 
    echo "FAILURE7"; 
    echo 'false'; 
} 

мой андроид код:

JSONObject j = new JSONObject(); 
     try { 
      j.put("BARCODE", "8904017500190"); 
      j.put("BATCHCODE", "220"); 
      j.put("UNIQUE_ID", "9876"); 

     } catch (JSONException e) { 
      Log.v("@@@@@JSONException", e.getMessage()); 
     } 
String url = "http://www.smartcloudinfotech.com/SmartDrugVerifier/verifyBarCode.php"; 
HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 

List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1); 
       nameValuePair.add(new BasicNameValuePair("data",j.toString())); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 

       response = httpclient.execute(httpPost); 
       Log.v("RESPONSE",""+response.toString()); 
       Toast.makeText(this, "RESPONSE in doPOST()"+response.toString(), Toast.LENGTH_SHORT).show(); 


      } catch (UnsupportedEncodingException e) { 
       Log.v("@@@@@@@@@@@@@@UnsupportedEncodingException", e.getMessage()); 
      } catch (ClientProtocolException e) { 
       Log.v("@@@@@@@@@ClientProtocolException",e.getMessage()); 
      } catch (IOException e) { 
       Log.v("@@@@@@@@@@IOException116", e.getMessage()); 
      } 

String temp = EntityUtils.toString(response.getEntity()); 

, когда я запускаю это значение программы переменной температуры Безразлично 't содержит любое значение. Пожалуйста, помогите мне, куда я пойду не так. не

+0

Это не похоже, что ваш код Android даже компилируется, вы можете запустить код Android? –

+0

да, он скомпилирован, я разделил этот код. некоторая часть может отсутствовать, как блок catch catch в ней или что-то в этом роде, показывает ли она ошибку времени компиляции ..? – prateek

+0

@NickGarvey Один из моих друзей сказал, что я не получаю никакого ответа, может быть из-за того, что значение не передается скрипту – prateek

ответ

0

Попробуйте использовать BufferedReader прочитать содержимое HttpEntity так:

void printResponse(HttpResponse response) throws IOException { 
    BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
    String line = ""; 
    while ((line = in.readLine()) != null) { 
     System.out.println(line); 
    } 
} 

Редактировать
Когда я выдавать POST с помощью Curl на сервер, с data=test, я не ответ. Я думаю, что это из-за этот код:

if(!is_array($data)) { 
    print_r($data); 
    exit; 
    echo "FAIL2"; 
    return 'false'; 
} 

Во-первых, если это не массив, вы хотите, чтобы напечатать массив. Это бессмысленно. Во-вторых, вы выходите, и вы эхом отзываете «FAIL2».

+0

не работает – prateek

+0

Отредактировано ответ – nhaarman

+0

print_r ($ data); выход; эта часть написана впоследствии, когда я не получал ответа. Я не получаю никакого ответа, может быть, потому что моя ценность не передается скрипту – prateek

0

Вы читаете ответ плохого в Android, то как этот

HttpResponse response = httpclient.execute(httppost); 
String result = EntityUtils.toString(response.getEntity()); 

Кроме того, я не большой PHP программист, но я верю, что вы читаете значения неправильно в PHP вы не прохождения JSONArray как насколько я могу судить, вы проходите JSONObject. Также удалите

print_r($data); 
exit; 
+0

благодаря тому, что я говорю, что я не передаю массив json. Я удалил if (! Is_array ($ data)) { print_r ($ data); выход; echo "FAIL2"; return 'false'; } Эта часть, но теперь скрипт возвращает мне «FAIL3» в качестве ответа – prateek

+0

Вы пытаетесь получить значения как массивы $ UNIQUE_ID = $ data ['UNIQUE_ID']; $ BAR_CODE = $ data ['BARCODE']; $ BATCH_CODE = $ data ['BATCHCODE']; Это не будет работать, поскольку это не массив. Также попробуйте отделить свои чеки, чтобы увидеть, какая вещь на самом деле терпит неудачу, поэтому не ставьте на многие || в ваших операциях if, проверяйте все индивидуально и отправляйте уникальную ошибку, таким образом вы точно узнаете, где ошибка. – mbwasi

Смежные вопросы