Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
在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为了防止这个事情发生就将在主线程请求连接的过程设置为异常,这里我们可以使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中创建一条线程,不影响主线程的运行。
这里还需要注意的是当一个线程运行完成之后,再次启动这个线程是可以的,但是非常麻烦,所以建议再次请求就再次创建一条线程。
Android客户端连接服务器端,向服务器端发送请求HttpURLConnection的更多相关文章
- C#写的客户端连接 php的服务器端的小例子
C#写的客户端连接 php的服务器端的小例子 php的server 端 <?php // server.php set_time_limit( 0 ); ob_implicit_flush(); ...
- ESP8266开发综合篇第十四节(LUA)-8266作为TCP服务器,Android客户端连接,显示温湿度,控制继电器
前几节先略过,我先补充上大部分人迫切的需求 编写Android TCP客户端 用Android Studio 先做一下界面 然后放一个输入对话框,因为没有显示出来这个控件.所以就手写 剩下的自己研究 ...
- 配置ORACLE 客户端连接到数据库
--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...
- Ajax向服务器端发送请求
Ajax向服务器端发送请求 Ajax的应用场景 页面上拉加载更多数据 列表数据无刷新分页 表单项离开焦点数据验证 搜索框提示文字下拉列表 Ajax运行原理 Ajax 相当于浏览器发送请求与接收响应的代 ...
- Android HTTP实例 使用GET方法和POST方法发送请求
Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...
- android客户端向服务器发送请求中文乱码的问
android客户端向服务器发送请求的时候,并将参数保存到数据库时遇到了中文乱码的问题: 解决方法: url = "http://xxxx.com/Orders/saveorder.html ...
- socket 套接字服务器端和客户端发送信息
import socket import threading host='' port=6889 def cilenThred(conn,addr): print("成功接受客户端{}的连接 ...
- C# Winform Soket 网络编程 多个客户端连接服务器并返回客户端操作请求
2017.8.2 服务器: #region 参数与集合 /// <summary> /// 客户端IP /// </summary> string clientIP; /// ...
- 基于Android的简单聊天工具-服务器端
1.数据库用的mysql,一共有3张表,一张用户表user.一张朋友列表friend和一张消息表message. 1 User table 用户表 uid 主键自动生成 userName 昵称 use ...
随机推荐
- Polipo
polipo代理服务器简介 HTTP代理polipo的配置与使用:http://wuwei5460.blog.51cto.com/2893867/1407369/
- javascript svg 页面 loading
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Ubuntu Server PHP常用扩展库的安装
sudo apt-get install php5-gd curl libcurl3 libcurl3-dev php5-curl
- Java内存回收 - 落日之心的日志 - 网易博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 关于服务器跨域问题(使用cors解决)
1.配置cors依赖 pom中加入 <dependency> <groupId>com.thetransactioncompany</groupId> <ar ...
- 用于辅助在 bootstrap-dialog 中的表现:app-jquery-dialog.js
// 用于通某个元素共享配置数据 $.extend($.fn, { formOption : function(showOpt) { var opt = $.data(this[0], "f ...
- 一个php开发的用于路由器的小功能
最近接到一个需求,假设有A.B.C 三台主机.现A主机要访问C主机上的一个脚本,并且根据A传递的参数给C主机,同时接受C主机返回来的数据.但是现在A主机不能直接通过url.IP访问C主机,需要借由主机 ...
- UVa 10945 - Mother bear
题目大意:给一个字符串,判断是否回文(忽略大小写,忽略非字母字符). #include <cstdio> #include <cctype> #include <cstr ...
- 【转】图片缓存之内存缓存技术LruCache、软引用 比较
每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧.这篇博文要讲的图片缓存机制,我接触到的有两钟,一 ...
- Servlet添加
index .jsp <body> <h1>第一个Servlet</h1> <hr> <a href = "servlet/Hellos ...