随笔分类 -  android 网络编程

摘要:Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了。可是怎样开发一款完备的android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做了一点总结,有不足之处也请读者补充。一、网络开发技能 开发的应用肯定会联网,在移动互联网时代,单机应用会越来越少。如果我们开发的应用缺少与服务器的交互,内容上不会丰富,更有可能的是我们无法控制到应用,得不到用户及用户反馈。网络连接中用的最多的无非是Http或者Tcp。Android中http使用提供了三个包,我们常用的是HttpClient、HttpURLConnection。网络上也有对htt. 阅读全文
posted @ 2013-12-26 11:05 张兴业 阅读(4154) 评论(10) 推荐(6)
摘要:Volley是Android开发者新的瑞士军刀,它提供了优美的框架,使得Android应用程序网络访问更容易和更快。Volley抽象实现了底层的HTTP Client库,让你不关注HTTP Client细节,专注于写出更加漂亮、干净的RESTful HTTP请求。另外,Volley请求会异步执行,不阻挡主线程。Volley提供的功能简单的讲,提供了如下主要的功能:1、封装了的异步的RESTful 请求API;2、一个优雅和稳健的请求队列;3、一个可扩展的架构,它使开发人员能够实现自定义的请求和响应处理机制;4、能够使用外部HTTP Client库;5、缓存策略;6、自定义的网络图像加载... 阅读全文
posted @ 2013-10-10 09:47 张兴业 阅读(3768) 评论(3) 推荐(0)
摘要:Apache HTTP Client DefaultHttpClient 以及其相关类 AndroidHttpClient适用于 web browsers, 他们是可扩展的,并且拥有大量的稳定APIs。 但是,在不破坏其兼容性的前提下很难对如此多的APIs做修改。因此,Android 团队对修改优化Apache HTTP Client表现的并不积极。HttpURLConnect HttpURLConnect是一个通用的、适合大多数应用的轻量级组件。这个类起步比较晚,很容易在主要API上做稳步的改善。 HttpURLConnection在Froyo上存在一些bug,尤其是在... 阅读全文
posted @ 2013-10-09 08:09 张兴业 阅读(1249) 评论(0) 推荐(0)
摘要:前一篇粗略的介绍了一下Volley,并在最后附上了一段使用代码,这一篇详细的介绍一下Volley的使用。前面也说了Volley主要获取JSON对象和图片加载,这里也分为两部分介绍。1、获取JSON对象1.1声明RequestQueue声明一个新的RequestQueue对象 private RequestQueue mRequestQueue;在onCreate初始化mRequestQueue mRequestQueue = Volley.newRequestQueue(this);1.2 声明并使用RequestJsonObjectRequest jr = new JsonObject... 阅读全文
posted @ 2013-10-08 19:07 张兴业 阅读(1506) 评论(0) 推荐(1)
摘要:1、什么是volley Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮。Volley名称的由来: a burst or emission of many things or a large amount at once。在Google IO的演讲上,其配图是一幅发射火弓箭的图,有点类似流星。见下图2、volley能做什么volley适合小而快的数据传输。Volley应该是简化了网络通信的一些开发,特别是针对以下两种情况:JSON对象图片加载Volley的便利功能:Advantages of... 阅读全文
posted @ 2013-09-29 20:11 张兴业 阅读(1272) 评论(0) 推荐(0)
摘要:虽然google为Android开发者提供了GCM实现push,但是因为需要系统安装了google play、google帐号、系统>2.2、google push服务器在国外等多种原因,在中国,Android上想实现push还需要自己努力。 当前最火的开源push是基于xmpp协议的androidpn。androidpn是基于Mina框架的,所以这里从Mina框架开始入手。看mina官网的说明:Server下面通过简单的例子来学习mina的使用。首先创建服务端,工程正使用了3个jar包 看代码:public class HelloMina { privat... 阅读全文
posted @ 2012-12-15 10:32 张兴业 阅读(467) 评论(0) 推荐(0)
摘要:Socket通常也称做”套接字“,用于描述IP地址和端口,它就是网络通信过程中端点的抽象表示。Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。SocketServer类,服务器实现:public class SocketServer { ServerSocket sever; public SocketServer(int port){ try{ sever = new ServerSocket(port); }... 阅读全文
posted @ 2012-12-13 16:40 张兴业 阅读(317) 评论(0) 推荐(0)
摘要:前面写了http的联网方式,Android平台上经常有使用https的需求,对于https服务器使用的根证书是受信任的证书的话,实现https是非常简单的,直接用httpclient库就行了,与使用http几乎没有区别。但是在大多数情况下,服务器所使用的根证书是自签名的,或者签名机构不在设备的信任证书列表中,这样使用httpclient进行https连接就会失败。解决这个问题的办法有两种,一是在发起https连接之前将服务器证书加到httpclient的信任证书列表中,这个相对来说比较复杂一些,很容易出错;另一种办法是让httpclient信任所有的服务器证书,这种办法相对来说简单很多,但安. 阅读全文
posted @ 2012-09-28 09:47 张兴业 阅读(1240) 评论(0) 推荐(0)
摘要:在Android SDK中提供了Apache HttpClient(org.apache.http.*)模块。在这个模块中涉及到两个重要的类:HttpGet和HttpPost,他们有共性也有不同。HttpGet和HttpPost创建方式相同: 1、创建HttpGet(或HttpPost)对象,将要请求的URL通过构造方法传入HttpGet(或HttpPost)对象中; 2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST 请求,并返回HttpResponse对象; 3、通过HttpResponse接口的getEntity方法返回响... 阅读全文
posted @ 2012-09-02 13:14 张兴业 阅读(215) 评论(0) 推荐(0)
摘要:前一篇给出了HttpGet的实例,这一篇给出HttpPost的实例。public class HttpPostDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Buf... 阅读全文
posted @ 2012-09-02 13:05 张兴业 阅读(272) 评论(0) 推荐(0)
摘要:在Android SDK中提供了Apache HttpClient(org.apache.http.*)模块。在这个模块中涉及到两个重要的类:HttpGet和HttpPost。这一篇一个实例给出httpGet的使用方法:public class HttpGetDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreat... 阅读全文
posted @ 2012-09-02 12:36 张兴业 阅读(258) 评论(0) 推荐(0)
摘要:网络编程在无线应用程序开发过程中起到了重要的作用。Android包括Apache HttpClient库,此库为执行Android中的网络操作之首选方法。Android还可允许通过标准的Java联网API(java.net包)来访问网络。即便使用Java.net包,也是在内部使用该Apache库。 为了访问互联网,你的应用程序需要获取“android.permission.INTERNET”权限Android中与网络相关的包以下内容为Android SDK中与网络相关的部分包•java.net 提供联网相关的类,包括流和数据报套接字、互联网协议以及通用的HTTP处理。此为多用... 阅读全文
posted @ 2012-09-02 12:30 张兴业 阅读(296) 评论(0) 推荐(0)
摘要:1.java.net.SocketTimeoutException.这个异常比较常见,socket超时。一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(SocketAddress endpoint,int timeout)中的后者来决定,还有就是setSoTimeout(int timeout),这个是设定读取的超时时间。它们设置成0均表示无限大。2.java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port) 或者socket.bind( 阅读全文
posted @ 2012-08-23 20:51 张兴业 阅读(292) 评论(0) 推荐(1)
摘要:http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/Two weeks ago I got the task to establish TLS secured connections via certificates to a service endpoint.I thought it’s not a big deal, because the endpoint already uses an EV certificate from a trusted CA (SwissSign) in Swit 阅读全文
posted @ 2011-04-09 23:59 张兴业 阅读(447) 评论(0) 推荐(0)
摘要:最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。最后又回到socket类,发现有一个方法sendUrgentData. 阅读全文
posted @ 2011-01-17 14:02 张兴业 阅读(3904) 评论(0) 推荐(0)
摘要:套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包。 套接字是基于TCP/IP实现的,它是用来提供一个访问TCP的服务接口,或者说套接字socket是TCP的应用编程接口API,通过它应用层就可以访问TCP提供的服务。在JAVA中,我们用ServerSocket、Socket类创建一个套接字 阅读全文
posted @ 2011-01-13 14:27 张兴业 阅读(248) 评论(1) 推荐(0)