2012-02-06 149 views
0

這是php代碼,我想在Android中使用HttpPost方法。我想請與POST方法一起發送的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'; 
} 

我的Android代碼:

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

當我運行變量temp沒有按這個計劃價值不包含任何價值。 請幫我解決我要出錯的地方。

+0

它看起來不像你的Android代碼,甚至編譯,你能夠運行Android代碼? – 2012-02-06 13:33:28

+0

是的,它編譯我已經剝離了這個代碼。有些部分可能會像try catch塊一樣丟失或者類似的東西,是否顯示編譯時錯誤..? – prateek 2012-02-06 13:37:05

+0

@NickGarvey @我的朋友之一說我沒有得到任何迴應可能是因爲價值沒有傳遞給腳本 – prateek 2012-02-06 14:04:13

回答

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

編輯
當我使用捲曲你的服務器發出一個帖子,有data=test,我沒有得到任何響應。我認爲這是由於這個代碼:

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

首先,如果它不是一個數組,你想打印數組。這是沒有意義的。 其次,你退出,並回應你的「失敗2」。

+0

它不起作用 – prateek 2012-02-06 13:58:30

+0

編輯答案 – nhaarman 2012-02-06 14:10:26

+0

print_r($ data); 退出; 這部分是後來寫的,當時我沒有得到任何迴應。 我沒有得到任何迴應可能是因爲我的價值沒有傳遞給腳本 – prateek 2012-02-06 14:19:40

0

您正在閱讀的響應錯在Android中,它是這樣

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

而且我不是一個很大的PHP程序員,但我相信你正在閱讀的價值觀錯在PHP你是不是傳遞一個JSONArray作爲據我所知,你正在傳遞一個JSONObject。還刪除了

print_r($data); 
exit; 
+0

感謝告訴我,我沒有傳遞json數組。 如果(!is_array($ data)){ print_r($ data);我已經刪除了 ; 退出; echo「FAIL2」; 返回'false'; } 這部分,但現在腳本正在返回我「FAIL3」作爲迴應 – prateek 2012-02-07 05:53:47

+0

您正在嘗試獲取值爲數組$ UNIQUE_ID = $ data ['UNIQUE_ID']; $ BAR_CODE = $ data ['BARCODE']; $ BATCH_CODE = $ data ['BATCHCODE'];這不會工作,因爲它不是一個數組。也嘗試分開你的支票,看看哪些事情實際上失敗了,所以不要把很多||在您的if語句中,單獨檢查所有內容併發送一個唯一的錯誤,這樣您就可以準確知道錯誤的位置。 – mbwasi 2012-02-07 12:02:05

相關問題