在Java中想后台服务器发送请求通常都直接使用了Java的网络编程,或者使用HttpClient向后台服务器端发送HTTP请求。虽然在安卓中,全部Java的API均可以使用,而却使用其并不会出现什么问题,可是HttpClient毕竟是基于Java标准实现的一个类,在安卓中,想要链接后台服务器端,专门基于android实现了一个类,为HttpURLConnection。经过HttpURLConnection,咱们能够实现向服务器端发送HTTP请求,连通后台服务器和客户端。java
这几天恰好在作android客户端和服务器端通讯,使用了HttpURLConnection。android
HttpURLConnection能够实现一个完整的HTTP协议的请求。编程
首先,new一个URL,知道链接服务器的地址。服务器
1 URL url = new URL(AppsData.LoginServerURL); 2 HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
其中AppsDatah.LoginServerURL这里设定的是一个URL。网络
接下来就是设置HTTP协议的内容:多线程
1 //设置HTTP协议 2 httpURLConnection.setRequestMethod("POST"); 3 httpURLConnection.setDoOutput(true); 4 httpURLConnection.setDoInput(true); 5 httpURLConnection.setConnectTimeout(5000); 6 httpURLConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
接下来和通常的网络编程同样使用流将内容写入:app
1 OutputStream outputStream = httpURLConnection.getOutputStream(); 2 objectOutputStream = new ObjectOutputStream(outputStream); 3 4 StringBuffer stringBuffer = new StringBuffer(); 5 stringBuffer.append(Data); 6 7 objectOutputStream.writeObject(stringBuffer);
在末尾必定要记着使用flush方法,当这个方法使用的时候数据才算是真正发送成功,可是这个方法必定要放在以上设置最后才能有效。url
1 objectOutputStream.flush(); 2 httpURLConnection.getInputStream();
经过以上方式就能够发送数据。spa
不过值得注意的是,在安卓3.0之后,若是想要向后台发送一个请求,或者说是创建一次链接的时候,若是直接调用这个方法,程序会出现报错。线程
缘由是:当主程序在想后台发送请求的时候,不必定会很快就给发送到,若是没有发送到,主程序会一直等待响应,可是样程序就没法作其余的事情,看起来这个程序就很“卡”,android为了防止这个事情发生就将在主线程请求链接的过程设置为异常,这里咱们可使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中建立一条线程,不影响主线程的运行。
这里还须要注意的是当一个线程运行完成以后,再次启动这个线程是能够的,可是很是麻烦,因此建议再次请求就再次建立一条线程。