Android(安卓)模拟器测试远程服务器成功,但是到真机上测试一点反应没有的解决办法
16lz
2021-01-26
问题描述:android客户端,.net服务器,我是使用webservice交互。使用登陆模块测试,转递用户名和密码,请求成功与否接口都会返回json数据信息。在模拟器上测试,一切都正常,然后放到手机里面测试,怪了,一点返回数据都没有,不管是成功还是失败都没有返回任何数据。 > loginInfo=JsonParse.JsonStrParse3(resultString, xkeys); //如果返回的失败的信息,则ArrayList中没有任何的元素,否则ArrayList中就是上面定义的xkeys对应的value信息 if (loginInfo!=null&&loginInfo.size()!=0&&!loginInfo.get(0).toString().trim().equals("")) { //把登陆信息保存在Application里面,只标注是否已经登陆 ((MyApplication)getApplication()).setUserId(loginInfo.get(0).get("UserID").toString()); ((MyApplication)getApplication()).setLoginName(loginInfo.get(0).get("LoginName").toString()); ((MyApplication)getApplication()).setUserName(loginInfo.get(0).get("UserName").toString()); //登录成功后,跳转到住界面 startActivity(new Intent(LoginActivity.this,MainActivity.class)); }else { Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_SHORT).show(); } } }; 好了,运行测试,一切都ok啦。 这篇文章在我的网易博客也发了: http://liangxianningstudy.blog.163.com/blog/static/168842477201332611143772/
以前写在博客园的文章
原因:根据调试信息,截图如下:
可以知道,原因就是不能在主线程里面访问网络,网络请求不应该在主线程中进行,这样会阻塞主线程。要另外开一耳光线程来做网络请求。
解决方法,把网络请求的代码放到新开的线程中执行。我的解决代码如下: new Thread(){ @Override public void run() { // TODO Auto-generated method stub super.run(); //定义登录需要的参数名和参数值 String[] paramsName={"UserName","md5Password","DBName","Server"}; String[] paramsValue={loginName.getText().toString(),MD5.getMD5ofStr(loginPwd.getText().toString()),loginDatabase.getSelectedItem().toString(),loginServer.getSelectedItem().toString()}; //使用webservice请求登录,返回json字符串信息 String result=WebServiceUtil.getDataByParams(Commom.uri,paramsName,paramsValue); Message message=new Message(); Bundle bundle=new Bundle(); bundle.putString("result", result); message.setData(bundle); handler.sendMessage(message); } }.start(); handler=new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); resultString=msg.getData().getString("result"); Log.i("Thread()--resultString:", resultString); //定义解析json信息后放入map中的key名,需要和返回的json中的key相同 String[] xkeys= new String[] { "UserID", "LoginName", "UserName"}; //调用JsonParse.JsonStrParse3方法解析json,并返回list ArrayList以前写在博客园的文章
更多相关文章
- Android(安卓)中实现在界面上右划返回上一个界面
- Android(安卓)错误信息捕获发送至服务器【原创】
- Android中使用Volley开源库进行Http网络请求(GET方式)
- 基于Android移动终端的搜索客户端应用【团队项目】
- 一起来开发Android的天气软件(一)——功能规格介绍
- Android(安卓)crash
- Android6.0权限
- Android(安卓)错误信息捕获发送至服务器【整理】
- 【Android(安卓)Advanced Training - 06】记住登入用户的信息[Le