作者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/cn.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