如何讓移動應用程序獲取來自web服務器(PHP/MySQL *)的數據 並向它發出請求?
在Android上,您的舊版本的Apache HTTP Client可用。所以這一方面適用於從您的應用程序到您的服務器的HTTP請求:
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("https://www.myserver.com/webservice/xyz");
HttpResponse response = client.execute(request);
只有3行代碼,你有一個GET請求。
那麼什麼樣的 web服務是由PHP和Android平臺版本8(2.2 升級Froyo)的支持?
有一個variety of different web-service libraries可用於PHP,如SOAP和其他基於XML的協議。我個人不會那麼做,因爲XML很臃腫。您希望在服務器和客戶端之間保持較小的傳輸數據,因爲您正在處理移動設備,有限的帶寬和昂貴的數據計劃。 JSON是XML的更緊湊的替代方案。您也可以創建自己的「二進制」數據格式來在服務器和客戶端之間交換數據。
在Android方面,您只需要爲您選擇的Web服務尋找合適的Java客戶端庫。或者,如果您選擇自定義解決方案,您只需自己編寫代碼。
有一個重要的要求:它應該是安全的,
使用HTTPS
通過從應用程序,即需要 認證只有應用程序 能夠訪問數據。
這不能可靠地執行,除非你正在處理用戶登錄,那麼是的。如果您確實需要您的用戶登錄,那麼請查看OAuth。
不要在您的客戶端應用程序和服務器上存儲純文本密碼。
如果你只是想強制,只有您的應用程序可以訪問Web服務,那麼你可以像一個「客戶端祕密」字符串添加到應用程序的HTTP請求頭添加的東西。您的服務器將要求該祕密字符串存在,否則訪問將被拒絕。
這不會阻止其他人在看你的應用程序搞清楚這個祕密,雖然。通過模糊這個祕密字符串,就可以讓它變得更加困難,就像隨機在字母周圍混淆等等。
您還可以定期更改每個主要更新的客戶端祕密。這將要求你的用戶有更新,否則他們將被鎖定。
+1我認爲在這個答案中有很多優秀的建議 – Trevor 2012-07-16 17:33:01
非常感謝你給出了這個非常好的答案我最終決定使用JSON我不得不用PHP/MySQL/JSON編碼掙扎,但現在它運行得非常好。不能使用HTTPs,但至少我使用一個額外的參數作爲驗證其他參數的意思)。 – tiktak 2012-07-29 20:50:46