[問題] 傳值給PHP再接收回傳值

看板AndroidDev作者 (ほむら)時間3年前 (2021/04/29 23:21), 編輯推噓4(4011)
留言15則, 7人參與, 3年前最新討論串1/1
各位大大好,又來問問題了 目前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

04/30 06:56, 3年前 , 1F
你可以用loopj這個library,你的問題關鍵字是webservice
04/30 06:56, 1F

04/30 23:42, 3年前 , 2F
這個已經被捨棄了,用用看Retrofit,教學不少
04/30 23:42, 2F

04/30 23:53, 3年前 , 3F
已經被捨棄了嗎(哭
04/30 23:53, 3F

05/01 11:42, 3年前 , 4F

05/01 11:43, 3年前 , 5F
你現在應該學會如何下中斷點去看程式運作順序
05/01 11:43, 5F

05/02 13:19, 3年前 , 6F
感謝各位指教
05/02 13:19, 6F

05/03 15:16, 3年前 , 7F
現在主流應該都是用 coroutine + retrofit
05/03 15:16, 7F

05/03 17:09, 3年前 , 8F
樓上就是在說新穎的東西,coroutine講一篇都講不完
05/03 17:09, 8F

05/05 13:35, 3年前 , 9F
樓上高手給推
05/05 13:35, 9F

05/05 23:59, 3年前 , 10F
DefaultHttpClient 已經被官方移除了沒錯,但
05/05 23:59, 10F

05/06 00:00, 3年前 , 11F
HttpURLConnection 還是可以用的,也能用來 post data
05/06 00:00, 11F

05/06 00:15, 3年前 , 12F
你的程式碼看不出明顯的問題,真要說的話,目前最大的
05/06 00:15, 12F

05/06 00:15, 3年前 , 13F
問題是在背景執行緒中顯示 Toast,先避免這麼做吧。
05/06 00:15, 13F

05/06 12:53, 3年前 , 14F
toast是有改了 不過還是收不到result 換okhttp還是
05/06 12:53, 14F

05/06 12:53, 3年前 , 15F
有一些bug 我先寫別的程式QQ
05/06 12:53, 15F
文章代碼(AID): #1WYiyGMr (AndroidDev)
文章代碼(AID): #1WYiyGMr (AndroidDev)