2011-05-29 84 views
1

我正在開發一個android應用程序,用於收集數據並將其發送到Web目錄。來自Android應用程序的數據 - > SQL服務器

所以我們可以說想要在手機上收集數據,然後點擊一個按鈕後,將所有數據以文件或流的形式發送到在線目錄。它甚至不需要得到答覆 - 雖然將來確認會很方便。

這裏是何許事物的秩序猜測...

dir = "someurl.com/data/files_received"; 
Array data; 
sendDataSomehow(dir, data); //obv the difficult bit! 

我在爲Android開發的早期階段,雖然我有很多經驗的編碼網絡進行,因此該位將被罰款。

我發現了諸如JSON,Google GSON,HTTP POST和GET之類的建議 - 這些聽起來像是正確的?

我希望我已經夠清楚了。

回答

2

是的,JSON將是一個很好的解決方案。

將您的數組編碼爲JSON,然後將其作爲HTTP POST請求的主體發送到您的Web服務器。如果你有一個小時可以殺人,那麼去年Google IO提供了一個非常好的視頻,解釋瞭如何在Android上實現一個REST客戶端(你所做的並不是嚴格的REST風格,但是你對服務器的呼叫是非常similer):http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

+0

謝謝,我現在就開始研究它。大講座......現在看... – 2011-05-29 08:45:17

1

對,只是想做一個快速的感謝把我放在正確的軌道上。剛剛有一個代碼工程EUREKA時刻,非常高興。我沒有使用過JSON,但是我已經設法通過HTTP-POST和一點PHP將Android中的變量傳遞給SQL。

我敢肯定這不是推薦意識形態的原因很多,雖然原型和演示文稿,它會做得很好!

下面是針對Android的代碼:

try { 
     URL url = new URL("http://www.yourwebsite.com/php_script.php"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("POST"); 
     conn.setDoOutput(true); 
     conn.setDoInput(true); 
     conn.setUseCaches(false); 
     conn.setAllowUserInteraction(false); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

     OutputStream out = conn.getOutputStream(); 
     Writer writer = new OutputStreamWriter(out, "UTF-8"); 
     writer.write("stringToPass=I'd like to pass this"); 
     writer.close(); 
     out.close(); 

     if(conn.getResponseCode() != 200) 
     { 
      throw new IOException(conn.getResponseMessage()); 
     } 

     BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     StringBuilder sb = new StringBuilder(); 
     String line; 
     while ((line = rd.readLine()) != null) 
     { 
      sb.append(line); 
     } 
     rd.close(); 

     conn.disconnect(); 
    } catch (MalformedURLException e1) { 
     textBox.setText(e1.toString()); 
    } catch (IOException e2) { 
     textBox.setText(e2.toString()); 
    } 

這裏是爲PHP代碼:

$conn = mysql_connect("localhost","web108-table","********") or die (mysql_error()); 
mysql_select_db("web108-table",$conn) or die (mysql_error()); 

$str = $_POST['stringToPass']; 

mysql_query("INSERT INTO table(field) VALUES ($str)"); 

此代碼的工作,非常簡單。接下來的測試將會發現它是否適合大量的字符串。

我希望這對其他人有幫助。

相關問題