Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
2017-02-06 10:59
525 查看
在Java中想后台服务器发送请求一般都直接使用了Java的网络编程,或者使用HttpClient向后台服务器端发送HTTP请求。虽然在安卓中,所有Java的API都可以使用,而却使用其并不会出现什么问题,但是HttpClient毕竟是基于Java标准实现的一个类,在安卓中,想要连接后台服务器端,专门基于android实现了一个类,为HttpURLConnection。通过HttpURLConnection,我们可以实现向服务器端发送HTTP请求,连通后台服务器和客户端。
这几天刚好在做android客户端和服务器端通信,使用了HttpURLConnection。
HttpURLConnection可以实现一个完整的HTTP协议的请求。
首先,new一个URL,知道连接服务器的地址。
其中AppsDatah.LoginServerURL这里设定的是一个URL。
接下来就是设置HTTP协议的内容:
接下来和一般的网络编程一样使用流将内容写入:
在末尾一定要记着使用flush方法,当这个方法使用的时候数据才算是真正发送成功,但是这个方法一定要放在以上设置最后才能有效。
通过以上方式就可以发送数据。
不过值得注意的是,在安卓3.0以后,如果想要向后台发送一个请求,或者说是建立一次连接的时候,如果直接调用这个方法,程序会出现报错。
原因是:当主程序在想后台发送请求的时候,不一定会很快就给发送到,如果没有发送到,主程序会一直等待响应,但是样程序就无法做其他的事情,看起来这个程序就很“卡”,android为了防止这个事情发生就将在主线程请求连接的过程设置为异常,这里我们可以使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中创建一条线程,不影响主线程的运行。
这里还需要注意的是当一个线程运行完成之后,再次启动这个线程是可以的,但是
9bf9
非常麻烦,所以建议再次请求就再次创建一条线程。
这几天刚好在做android客户端和服务器端通信,使用了HttpURLConnection。
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");
接下来和一般的网络编程一样使用流将内容写入:
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方法,当这个方法使用的时候数据才算是真正发送成功,但是这个方法一定要放在以上设置最后才能有效。
1 objectOutputStream.flush(); 2 httpURLConnection.getInputStream();
通过以上方式就可以发送数据。
不过值得注意的是,在安卓3.0以后,如果想要向后台发送一个请求,或者说是建立一次连接的时候,如果直接调用这个方法,程序会出现报错。
原因是:当主程序在想后台发送请求的时候,不一定会很快就给发送到,如果没有发送到,主程序会一直等待响应,但是样程序就无法做其他的事情,看起来这个程序就很“卡”,android为了防止这个事情发生就将在主线程请求连接的过程设置为异常,这里我们可以使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中创建一条线程,不影响主线程的运行。
这里还需要注意的是当一个线程运行完成之后,再次启动这个线程是可以的,但是
9bf9
非常麻烦,所以建议再次请求就再次创建一条线程。
相关文章推荐
- Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
- Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
- Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
- 在Java中使用HttpURLConnection发送http客户端请求、服务器端返回信息、接受服务器端的信息
- Android使用HttpUrlConnection请求服务器发送数据详解
- Android客户端请求服务端资源(HttpURLConnection和输入流实现)
- android发送http请求—-URLConnection、HttpURLConnection的使用
- Android HttpUrlConnection 发送Post请求 PHP页面$_POST接收不到问题
- Http学习之使用HttpURLConnection发送post和get请求 android
- Android使用HttpUrlConnection请求服务器发送数据详解
- Android例子—HttpURLConnection发送POST、GET请求代码示例
- Android/java 利用HttpUrlConnection 发送put请求,携带json参数
- Android HttpUrlConnection 发送网络请求步骤总结
- 利用fiddler工具调试android应用发送HttpURLConnection请求
- android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据
- Android使用HttpUrlConnection请求服务器发送数据详解
- Android使用HttpURLConnection发送网络请求(笔记)
- Android使用HttpUrlConnection请求服务器发送数据详解
- Android用httpURLConnection发送post网络请求并拿到数据
- Android中利用HttpURLConnection发送Post请求并添加参数的写法