做了个安卓和php端通信的app,但是返回数据处理时异常

本文介绍了一个安卓应用与PHP服务器进行通信的案例。重点在于调试过程中遇到的问题:当服务器返回错误信息时,客户端无法正常处理。通过移除处理JSON数据的代码段,解决了条件判断不执行的问题。
做了个安卓和php端通信的app,  先post  id到php端检查许可,成功返回一个json格式的数组,失败返回Error。    
运行时发现,当成功时能返回json数据, 一旦失败app端完全没有反映,就是if语句完全不执行,连空的toast框都没有。


检查后发现, 一旦删了下面红色部分的处理json数据的语句,  if和else语句都可以正确执行

new Thread(new Runnable() {
            public void run()
            {
              
                try {
                 
                    client = new DefaultHttpClient();
                    StringBuilder builder = new StringBuilder();

                    ArrayList params = new ArrayList();
                    params.add(new BasicNameValuePair("id",id));
                   
                    HttpPost myget = new HttpPost("http://192.168.210.51/login2.php");
                    
                    myget.setEntity(new UrlEncodedFormEntity(params));
                    HttpResponse response = client.execute(myget);
                    HttpEntity entity = response.getEntity();




                    if(response.getStatusLine().getStatusCode()!=200){
                        Looper.prepare();
                        Toast toast=Toast.makeText(getApplicationContext(),"异常", Toast.LENGTH_SHORT);
                        toast.setGravity(Gravity.TOP| Gravity.CENTER, -50, 100);
                        toast.show();
                        Looper.loop();
                    }

                        String result = EntityUtils.toString(response.getEntity());
                    
                        //检查php端返回的信息
                        if(result.equals("Error")){
                            Looper.prepare();
                            Toast toast=Toast.makeText(getApplicationContext(),result, Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.TOP| Gravity.CENTER, -50, 100);
                            toast.show();
                            Looper.loop();
                        }

                        else{
                            Looper.prepare();
                            ArrayList Listfirst = new ArrayList();
                            ArrayList Listlast = new ArrayList();
                            ArrayList Listage = new ArrayList();

                           JSONArray mJSONArray=  new JSONArray(result);
                          for(int i =  0 ; i < mJSONArray.length(); i++)
                            {
                                JSONObject jsonItem = mJSONArray.getJSONObject(i);
                                String firstname = jsonItem.getString("menu_name");
                                String lastname = jsonItem.getString("url");
                                String age = jsonItem.getString("remark");
                                Listfirst.add(firstname);
                                Listlast.add(lastname);
                                Listage.add(age);
                            }
                            Message msg = new Message();
                            msg.what = 0x123;
                            msg.obj =Listfirst.toString();
                            myHandler.sendMessage(msg);

                            
                            Toast toast=Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT);
                            toast.setGravity(Gravity.TOP|Gravity.CENTER, -50, 100);
                            toast.show();
                            Looper.loop();

                        }






顺便附上php代码,不管有没有用。。。。。。
<?php

$json = "";
$data = array();

class User{
public $menu_name;
public $url;
public $remark;
}

$user = new User();
$user->menu_name="装配单确认";
$user->url="http://192.168.208.1/app/android/1_zp.php";
$user->remark="";
$data[] = $user;

$user = new User();
$user->menu_name="装配滞留确认";
$user->url="http://192.168.208.1/app/android/1_zl.php";
$user->remark="";
$data[] = $user;
$json = json_encode($data);

if(isset($_POST['id']))$id = $_POST['id'];
else  $id ="";

if($id =="C61D4F4"){echo $json;}
else {echo "Error; }
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值