在Java中想后台服务器发送请求一般都直接使用了Java的网络编程,或者使用HttpClient向后台服务器端发送HTTP请求。虽然在安卓中,所有Java的API都可以使用,而却使用其并不会出现什么问题,但是HttpClient毕竟是基于Java标准实现的一个类,在安卓中,想要连接后台服务器端,专门基于android实现了一个类,为HttpURLConnection。通过HttpURLConnection,我们可以实现向服务器端发送HTTP请求,连通后台服务器和客户端。

这几天刚好在做android客户端和服务器端通信,使用了HttpURLConnection。

HttpURLConnection可以实现一个完整的HTTP协议的请求。

首先,new一个URL,知道连接服务器的地址。

 URL url = new URL(AppsData.LoginServerURL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

其中AppsDatah.LoginServerURL这里设定的是一个URL。

接下来就是设置HTTP协议的内容:

  //设置HTTP协议
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");

接下来和一般的网络编程一样使用流将内容写入:

 OutputStream outputStream = httpURLConnection.getOutputStream();
objectOutputStream = new ObjectOutputStream(outputStream); StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(Data); objectOutputStream.writeObject(stringBuffer);

在末尾一定要记着使用flush方法,当这个方法使用的时候数据才算是真正发送成功,但是这个方法一定要放在以上设置最后才能有效。

 objectOutputStream.flush();
httpURLConnection.getInputStream();

通过以上方式就可以发送数据。

不过值得注意的是,在安卓3.0以后,如果想要向后台发送一个请求,或者说是建立一次连接的时候,如果直接调用这个方法,程序会出现报错。

原因是:当主程序在想后台发送请求的时候,不一定会很快就给发送到,如果没有发送到,主程序会一直等待响应,但是样程序就无法做其他的事情,看起来这个程序就很“卡”,android为了防止这个事情发生就将在主线程请求连接的过程设置为异常,这里我们可以使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中创建一条线程,不影响主线程的运行。

这里还需要注意的是当一个线程运行完成之后,再次启动这个线程是可以的,但是非常麻烦,所以建议再次请求就再次创建一条线程。

最新文章

  1. CMD复制文件夹
  2. HTML5 的 applicationCache 应用程序缓存离线存储功能与 manifest 文件
  3. 转-JS子窗口创建父窗口操作父窗口
  4. 关于TCP主动关闭连接中的wait_timeout
  5. Sublime Text 3 代码格式化插件推荐 CodeFormatter
  6. 经典关于多态的demo
  7. 文件操作-php
  8. ion-scroll zooming="true" android端无法缩放的问题
  9. 【前端】:Dom
  10. Codeforces 839A Arya and Bran【暴力】
  11. [APIO 2009] Atm
  12. iOS项目之WKWebView替换UIWebView相关
  13. matlab中变量问题——readonly 索引超出矩阵维度 workspacefunc 215
  14. linux 文件压缩与解压缩
  15. Vue内置的Component标签用于动态切换组件
  16. 问题; No label views point to this text field with an android:labelFor="@+id/@+id/editTextNumber1" attribute
  17. VmWare15 许可证
  18. springboot 入门
  19. 解决wamp 3.0.6 访问路径出现 403 错误
  20. 使用Fiddler重定向App的网络请求

热门文章

  1. ios开发证书,描述文件,bundle ID的关系
  2. MAC 调整Launchpad 图标大小
  3. jQuery + json 实现省市区三级联动
  4. 十大滤波算法程序大全(Arduino精编无错版)(转)
  5. Spring自学教程-jabc编程详解、RowMapper使用(三)
  6. CodeForces 652A Gabriel and Caterpillar
  7. (中等) POJ 2991 Crane , 几何+线段树。
  8. bzoj-4318 OSU! 【数学期望】
  9. GP项目总结(一)
  10. 【腾讯优测干货分享】微信小程序之自动化亲密接触