作者Kanamehomura (ほむら)
看板AndroidDev
標題[問題] 傳值給PHP再接收回傳值
時間Thu Apr 29 23:21:41 2021
各位大大好,又來問問題了
目前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://webptt.com/m.aspx?n=bbs/AndroidDev/M.1619709712.A.5B5.html
1F:→ pttworld: 你可以用loopj這個library,你的問題關鍵字是webservice 04/30 06:56
2F:→ JimRoid: 這個已經被捨棄了,用用看Retrofit,教學不少 04/30 23:42
3F:→ Kanamehomura: 已經被捨棄了嗎(哭 04/30 23:53
5F:→ zcbxvsdf: 你現在應該學會如何下中斷點去看程式運作順序 05/01 11:43
6F:→ Kanamehomura: 感謝各位指教 05/02 13:19
7F:推 LiHowDie: 現在主流應該都是用 coroutine + retrofit 05/03 15:16
8F:→ zcbxvsdf: 樓上就是在說新穎的東西,coroutine講一篇都講不完 05/03 17:09
9F:推 paul7322000: 樓上高手給推 05/05 13:35
10F:推 pinefruit: DefaultHttpClient 已經被官方移除了沒錯,但 05/05 23:59
11F:→ pinefruit: HttpURLConnection 還是可以用的,也能用來 post data 05/06 00:00
12F:→ pinefruit: 你的程式碼看不出明顯的問題,真要說的話,目前最大的 05/06 00:15
13F:→ pinefruit: 問題是在背景執行緒中顯示 Toast,先避免這麼做吧。 05/06 00:15
14F:→ Kanamehomura: toast是有改了 不過還是收不到result 換okhttp還是 05/06 12:53
15F:→ Kanamehomura: 有一些bug 我先寫別的程式QQ 05/06 12:53