[问题] 传值给PHP再接收回传值

楼主: Kanamehomura (ほむら)   2021-04-29 23:21:41
各位大大好,又来问问题了
目前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) {
}
}};
作者: pttworld (批踢踢世界)   2021-04-30 06:56:00
你可以用loopj这个library,你的问题关键字是webservice
作者: JimRoid (小绵绵)   2021-04-30 23:42:00
这个已经被舍弃了,用用看Retrofit,教学不少
楼主: Kanamehomura (ほむら)   2021-04-30 23:53:00
已经被舍弃了吗(哭
作者: zcbxvsdf (东北一头羊)   2021-05-01 11:42:00
https://i.imgur.com/fBX2KRz.jpg你现在应该学会如何下中断点去看程式运作顺序
楼主: Kanamehomura (ほむら)   2021-05-02 13:19:00
感谢各位指教
作者: LiHowDie (我要坚强 我可以)   2021-05-03 15:16:00
现在主流应该都是用 coroutine + retrofit
作者: zcbxvsdf (东北一头羊)   2021-05-03 17:09:00
楼上就是在说新颖的东西,coroutine讲一篇都讲不完
作者: paul7322000 (风飘雪夜)   2021-05-05 13:35:00
楼上高手给推
作者: pinefruit (莫使惹尘埃)   2021-05-05 23:59:00
DefaultHttpClient 已经被官方移除了没错,但HttpURLConnection 还是可以用的,也能用来 post data你的程式码看不出明显的问题,真要说的话,目前最大的问题是在背景执行绪中显示 Toast,先避免这么做吧。
楼主: Kanamehomura (ほむら)   2021-05-06 12:53:00
toast是有改了 不过还是收不到result 换okhttp还是有一些bug 我先写别的程式QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com