看板 AndroidDev 關於我們 聯絡資訊
各位大大好,又來問問題了 目前android還是初心者但PHP算是熟的狀態 排版爛先說抱歉 想問android的問題: 我現在想做的是登入系統用POST傳帳號密碼給PHP再回傳OK之類的 讓android端可以判斷後登入到主頁 但是好像POST傳值後android端就不會做事了想要解決這個問題 我可以接收值 也可以POST傳值 但要把這兩件事寫在同一個執行緒就不會了 附上程式碼 也是網路上拿來改一下的 這是要讀取用的java 只取連線的一部分不是完整程式碼 這一段我可以讀PHP echo的內容 private Runnable mutiThread = new Runnable(){ public void run() { try { URL url = new URL("要連結的PHP"); // 開始宣告 HTTP 連線需要的物件,這邊通常都是一綑的 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 建立 HttpURLConnection 物件 connection.setRequestMethod("POST"); // 設定連線方式為 POST connection.setDoOutput(true); // 允許輸出 connection.setDoInput(true); // 允許讀入 connection.setUseCaches(false); // 不使用快取 connection.connect(); // 開始連線 int responseCode =connection.getResponseCode(); // 建立取得回應的物件 if(responseCode == HttpURLConnection.HTTP_OK){ // 如果 HTTP 回傳狀態是 OK ,而不是 Error InputStream inputStream = connection.getInputStream(); // 取得輸入串流 BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8); // 讀取輸入串流的資料 String box = ""; // 宣告存放用字串 String line = null; // 宣告讀取用的字串 while((line = bufReader.readLine()) != null) { box += line + "\n"; // 每當讀取出一列,就加到存放字串後面 } inputStream.close(); // 關閉輸入串流 result = box; // 把存放用字串放到全域變數 } // 讀取輸入串流並存到字串的部分 } catch(Exception e) { result = e.toString(); // 如果出事,回傳錯誤訊息 } // 當這個執行緒完全跑完後執行 runOnUiThread(new Runnable() { public void run() { data.setText(result); // 更改顯示文字 } }); } }; 另外一個是用POST新增資料到資料庫的 Toast就不會顯示 可能是在執行緒的關係 我想看result但是那一段好像沒有執行 還是result是空的 如果能接收result那我的問題大概解決 private Runnable mutiThread = new Runnable(){ public void run(){ try{ // 地址 final String PostUrl = "新增資料的PHP"; // 建一个Http请求 HttpPost httprequest = new HttpPost(PostUrl); List postparams = new ArrayList(); postparams.add(new BasicNameValuePair("user",user.getText().toString())); // 添加必须的參數 postparams.add(new BasicNameValuePair("password",password.getText().toString())); httprequest.setEntity(new UrlEncodedFormEntity(postparams, HTTP.UTF_8)); HttpResponse httpResponse = new DefaultHttpClient().execute(httprequest); // 發送請求 // 返回的内容 String result = EntityUtils.toString(httpResponse.getEntity()); Toast.makeText(當前頁面.this,result,Toast.LENGTH_SHORT).show(); }catch (Exception e) { } }}; -- 我終於了解了,圓神是巨乳,也是貧乳。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.112.229 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1619709712.A.5B5.html
pttworld: 你可以用loopj這個library,你的問題關鍵字是webservice 04/30 06:56
JimRoid: 這個已經被捨棄了,用用看Retrofit,教學不少 04/30 23:42
Kanamehomura: 已經被捨棄了嗎(哭 04/30 23:53
zcbxvsdf: https://i.imgur.com/fBX2KRz.jpg 05/01 11:42
zcbxvsdf: 你現在應該學會如何下中斷點去看程式運作順序 05/01 11:43
Kanamehomura: 感謝各位指教 05/02 13:19
LiHowDie: 現在主流應該都是用 coroutine + retrofit 05/03 15:16
zcbxvsdf: 樓上就是在說新穎的東西,coroutine講一篇都講不完 05/03 17:09
paul7322000: 樓上高手給推 05/05 13:35
pinefruit: DefaultHttpClient 已經被官方移除了沒錯,但 05/05 23:59
pinefruit: HttpURLConnection 還是可以用的,也能用來 post data 05/06 00:00
pinefruit: 你的程式碼看不出明顯的問題,真要說的話,目前最大的 05/06 00:15
pinefruit: 問題是在背景執行緒中顯示 Toast,先避免這麼做吧。 05/06 00:15
Kanamehomura: toast是有改了 不過還是收不到result 換okhttp還是 05/06 12:53
Kanamehomura: 有一些bug 我先寫別的程式QQ 05/06 12:53