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

本文分享了在实现安卓访问.netmvc后台过程中遇到的问题及解决办法,包括配置iisexpress让外网访问、安卓网络操作需在多线程中进行、在多线程中操作UI的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



项目组要求我做一个安卓访问.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.youkuaiyun.com/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,到这里,任务完成。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值