Android 模拟器测试远程服务器成功,但是到真机上测试一点反应没有的解决办法
Beginning
问题描述:android客户端,.net服务器,我是使用webservice交互。使用登陆模块测试,转递用户名和密码,请求成功与否接口都会返回json数据信息。在模拟器上测试,一切都正常,然后放到手机里面测试,怪了,一点返回数据都没有,不管是成功还是失败都没有返回任何数据。
原因:根据调试信息,截图如下:
可以知道,原因就是不能在主线程里面访问网络,网络请求不应该在主线程中进行,这样会阻塞主线程。要另外开一耳光线程来做网络请求。
解决方法,把网络请求的代码放到新开的线程中执行。我的解决代码如下:
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<HashMap<String, Object>> 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啦。
Ending
本文如果对您有帮助欢迎打赏作者,多少随意一分也是爱!
作者:Java夜未眠
出处:https://www.cnblogs.com/liangxianning/archive/2013/04/27/3046401.html
版权声明:本博客所有文章除特别声明外,均采用「 MIT 许可协议。」许可协议进行许可
关于博主: 评论和私信会可能回复较慢,点击上面加人图标加我为好友吧
分类:
移动开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)