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 ...
随机推荐
- css中元素水平垂直居中4种方法介绍
table-cell轻松设置文本图片水平垂直居中 让一个元素垂直居中的思路:把这个元素的容器设置为table-cell,也就是具有表格单元格的特性,再使用vertical-align(这个属性对blo ...
- Alcatraz:插件管理
安装: 终端粘贴 "curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh&qu ...
- CodeForces 620E New Year Tree
线段树+位运算 首先对树进行DFS,写出DFS序列,记录下每一个节点控制的区间范围.然后就是区间更新和区间查询了. 某段区间的颜色种类可以用位运算来表示,方便计算. 如果仅有第i种颜色,那么就用十进制 ...
- RabbitMQ 消息队列 配置
CentOS 7 x64 rabbitmq 一.CentOS 7 yum 添加epel 源 yum -y install epel-release 1. yum -y install erlang ...
- python数据类型之 dict(map)
字典 一.创建字典 方法①: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >& ...
- mysql 数据库 切表的脚本
#!/bin/sh host=$1 port=$2 host=${host:="localhost"} #host没赋值,那么就赋值为localhost port=${port: ...
- WIFI机器人网
WIFI机器人网 WIFI智能小车机器人 外网远程控制WIFI智能小车机器人(WIFI板/703N)
- CodeForces 631C Print Check
排序+构造+预处理 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm ...
- Java中的Runtime类
Runtime类描述了虚拟机一些信息.该类采用了单例设计模式,可以通过静态方法 getRuntime()获取Runtime类实例.下面演示了获取虚拟机的内存信息: package Main; publ ...
- Android SQLite 加密模块实现入门
安卓的安全性那是众所周知,最近学习安卓apk反编译,发现某些即时通讯软件都封装了自己独立使用的数据库模块(从framework java/C++ 一直到底层的SQLite的C库), 为了防止被root ...