2012-08-12 27 views
1

我研究了所有的互聯網,並發現如何使用http post從android到php服務器的文章。我不在尋找如何將數據從android傳遞到網站的例子。我正在尋找爲什麼POST變量在PHP中總是NULL的原因。有什麼設置我需要檢查PHP(我已檢查輸出緩衝,最大後等)或導入類的HTTP POST正常工作的POST變量。Android Java Http Post到PHP服務器始終爲NULL?

下面的代碼基本上將值插入到mysql數據庫。因爲POST變量是空白的,所以它插入空行。這證實它連接到我的服務器/數據庫,但POST值沒有被傳遞。任何想法? =)

下面是代碼:

//Java Code------------------------------------------------- 
    public static void executeHttpGet(Context context, String urlName){ 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    String postURL = G.GetUrl(urlName); 
    HttpPost httpPost = new HttpPost(postURL); 
     httpPost.setHeader("Accept", "text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"); 
     httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded"); 

    // Add your data 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

    try { 
     nameValuePairs.add(new BasicNameValuePair("value1", "My Name")); 
     nameValuePairs.add(new BasicNameValuePair("value2", "My Address")); 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8)); 
     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httpPost); 

    } catch (ClientProtocolException e) { 

    } catch (IOException e) { 

    } 
} 

    //PHP code ---------------------------------------------------- 
    connectMySQL(); 

    mysql_query(" 
     INSERT INTO myhome(myname,myaddress,createdate) 
     VALUES('{$_POST['value1']}','{$_POST['value2']}',NOW()) 
    ;") 
    or die(mysql_error()); 

回答

0

你可以嘗試在你的SQL使用它們之前打印$ _ POST [ '值1']和$ _POST [ '值'],看看他們打印的內容?

爲了簡單起見,我建議你重寫你的PHP代碼:

connectMySQL(); 
$value1 = trim($_POST['value1']); 
$value2 = trim($_POST['value2']); 
if ($value1 != "" && $value2 != "") { 
    mysql_query(" 
     INSERT INTO myhome(myname,myaddress,createdate) 
     VALUES('".$value1."','".$value2."',NOW()) 
    ;") 
} 

而且,一旦您已驗證它工作,我強烈建議你閱讀有關SQL注入攻擊,並嘗試使用綁定變量或參數化查詢,而不是直接在您的SQL語句中使用請求參數值。

+0

感謝您的快速響應。我檢查了v.log,它在android上顯示爲value1和value2的空白。我整個週末都在看代碼,看不出有什麼問題。 – LisaNerdyPower 2012-08-12 16:39:51

+0

你是什麼意思v.log在android上顯示value1和value2的空白? value1和value2是在PHP端和Android端檢索的,你正在使用硬編碼值嗎? – bpatel 2012-08-12 17:01:45

+0

有誰知道你是否需要SSL設置才能通過HTTP POST將數據從android設備傳遞到服務器? – LisaNerdyPower 2012-08-19 14:18:16