做安卓通过http访问.netmvc后台的几点体会



项目组要求我做一个安卓访问.net mvc后台的demo。倒腾了快一个星期,今天终于收尾了。得到了几个重要的经验:


1、由于安卓使用的是模拟器,所以,虽然程序和后台在同一个物理机器上运行,但是不能使用localhost访问后台。而iisexpress默认的只能使用localhost访问。发布到iis上的话,肯定能够成功,但是我没有发布成功。最后几经周折,发现只要配置一下iisexpress的配置文件就可以解决问题,可以让外网访问

点击这个配置文件


找到

<site name="WebSite1" id="1" serverAutoStart="true">
      <application path="/">
           <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
      </application>
      <bindings>
           <binding protocol="http" bindingInformation=":8080:localhost" />
      </bindings>
</site>


其中name是你Web项目的名称,找到对应你项目的配置,然后在

 <binding protocol="http" bindingInformation="*:8080:localhost" />
后面加上

 <binding protocol="http" bindingInformation="*:8080:192.168.1.1" />
其中192.168.1.1改为你自己的Ip地址,8080改为你自己的端口,即可外网访问

参见博客http://blog.csdn.net/zhangjk1993/article/details/36671105

但是不知道为什么,我的vs始终没有在本机发布mvc应用程序到正式的iis7.5成功,只能在iisexpress上默认发布,再说吧,反正问题是解决了。

2、安卓的网络操作必须在多线程里面进行,查了查,原来是因为安卓设计者害怕网络会阻塞连接,所以才这样设计的。自己起一个多线程,就可以进行网络连接了。但是要操作ui,只能在主线程里面进行。

3、那么问题来了,网络连接获得消息后,总还是要在界面显示的,而界面操作只能在主线程中进行,那该如何?很简单,网上有很多的方法,我采用了控件.post的方式。参看代码:

// 操作ui智能在主线程,但是网络消息传输只能在多线程里面进行。最后采用了控件.post的方法在多线程里面操作ui
			textView2.post(new Runnable() {
				@Override
				public void run() {
					textView2.setText(jsonStr);
				}
			});

我想,从本质上来讲,它应该是向主线程发了消息,调用主线程的函数,来对控件进行设置的。

可以参见http://blog.sina.com.cn/s/blog_58b5cfcc0100khf3.html。这个博客里面谢了三种方法,还是第一种post的方法比较简单。而且尝试了第二种handler后,发现,网络连接无法进行。第三中没有尝试。


ok,到这里,任务完成。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值