Igouist / Igouist.github.io

伊果的沒人看筆記本,一個菜雞不知道能撐多久的部落格,請見:https://igouist.github.io/
7 stars 1 forks source link

post/2019/12/android-fetch-mysql-using-xampp/ #8

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Android: MySQL 連線筆記(使用XAMPP) | 伊果的沒人看筆記本

利用 XAMPP 簡單地架設一個有 MySQL 資料庫的伺服器環境,並且編寫 PHP 接收和傳送資料。目標是在 Android 上取得資料庫的資料。

https://igouist.github.io/post/2019/12/android-fetch-mysql-using-xampp/

thumbb13555 commented 3 years ago

寫得真仔細,讚

Igouist commented 3 years ago

寫得真仔細,讚

謝謝~😀

HEYNORMAN commented 3 years ago

哈囉 伊果謝謝你的文章教學 目前按照您流程都是正常可以執行且略懂 但是今天我想要新增一個功能 在Andorid端輸入的資料透過PHP上傳到MySQL(也就是上傳/註冊的意思)

按照我目前的邏輯 把我輸入的內容變成字串 再將我的字串連結PHP 透過PHP的SQL語法 將字串上傳至MySQL

但是目前做了很多組都沒有成功 不知道伊果能不能給我一些指導 謝謝

Igouist commented 3 years ago

Hi, @HEYNORMAN

因為我已經離開 Android 和 PHP 蠻久了,所以只能跟你說一下我的想法。我認為你的思路大致上沒有問題,但讓我們先一起釐清一些地方:

首先,對 Android 這端來說,等於是去呼叫 API 進行互動,對 API 發送的請求中最常見的是「取值用的 GET」和「給值或萬用字元的 POST」,像本篇文章就是傳遞了一個 POST 的要求到指定的網址上。那麼,我們首先要確認的就是:我們要怎麼在發送 POST 的請求的時候把資料也放進去?POST 常見的是 把要傳送的內容作為參數放到這次請求的 Body 裡面 ,所以可以朝這個方向去試試。

由於本篇的程式碼範例是使用 HttpURLConnection,所以我搜尋了「android HttpURLConnection post body」之後,有看到一些文章可能可以嘗試,例如 小賴的實戰記錄的這篇範例,也許可以先建立一個 Map<String, String> 來放我們的參數,例如 map.put("Name", "Joe");,然後像他一樣用 getJSONString 轉換成 JSON 之後用 OutputStream 寫到我們的請求裡。(順帶一提,如果你已經把連線的部分改用文內圖片中比較簡單的 HttpPost 的話,可以改成參考這篇 Android HTTP Get 及 Post

因為 Android 的發送部分不太能單獨測試,我們還必須調整 PHP 才行,這邊我們得要知道 PHP 怎麼接收 POST 過來的 Body 資料。我可能會先參考 PHP傳送和接收JSON請求 裡面 php://input 的這個用法。這邊首要的是把接收到的東西印出來看看有沒有接到值,必要的時候(例如不確定是 Android 送不出來還是 PHP 收不到的時候)可以試試看用 Postman 這套工具來自己傳送一個 POST 請求給 PHP 腳本看看。

如果這邊成功印出來了,先恭喜你,接下來我們只需要改寫 query() 的指令用 SQL 把資料塞進去就好(小心 SQL injection 呦)。

我現在想到的部分差不多這樣,實際上跟你想的步驟是一樣的。有點不好意思是手邊沒辦法模擬,只能提供一點意見,期待你的嘗試,祝你武運昌隆。

chen-yenan commented 3 years ago

你好 謝謝你的教學,也成功連線了!!! 但有個問題想請教您,要如何改為https加密連線? 基於開發需求需要考量到安全性,本身android studio 是用httpclient做連線,有支援https。但xampp要如何設定? 並且在按 admin 後自動導向https,另外是android 端除了網址外需要修改嗎?。希望您給我一些建議,謝謝

Igouist commented 3 years ago

你好 謝謝你的教學,也成功連線了!!! 但有個問題想請教您,要如何改為https加密連線? 基於開發需求需要考量到安全性,本身android studio 是用httpclient做連線,有支援https。但xampp要如何設定? 並且在按 admin 後自動導向https,另外是android 端除了網址外需要修改嗎?。希望您給我一些建議,謝謝

Hi, @chen-yenan 我對這部分比較不熟欸,大概只知道要先申請 SSL 憑證、再到 XAMPP 的地方調整相關設定。可以嘗試用「XAMPP SSL HTTPS」這樣的關鍵字下去搜尋看看,我剛剛搜了有看到一些調整 httpd-ssl.conf 的教學,可以再嘗試看看;至於 Android 的部分,如果是用 HttpURLConnection 的話可以改用 URLConnection 看看,應該能查到其他範例,加油。

A108221206 commented 2 years ago

各位好,請問有沒有用listview排列好的實際例子可以參考呢? 謝謝

qingwanzhuang commented 2 years ago

您好 謝謝您提供這篇非常有用的文章 想請問您在我執行之後 系統出現連線失敗 我應該要如何處理呢? 謝謝您

hartlin14 commented 3 months ago

@qingwanzhuang 最近在做畢專,剛開頭就被這連結資料庫卡住。 消極的卡了一個月終於今天解決了。 結論是因為高版本安卓(9.0以上)不允許HTTP,要在AndroidManifest.xml的<application 裡頭加入 android:usesCleartextTraffic="true" 就能成功了。

一路摸到這裡也是依靠error message才判斷出來。首先當確定php服務、檔案以及網路連線都正常、正確時,自己創建的TextView會在按下按鈕後出現 java.io.ioexception:cleartext HTTP traffic to 10.0.2.2 not permitted 拿這串去google就結案。