Android客户端连接服务器端,向服务器端发送请求HttpURLConnection

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

这几天刚好在做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为了防止这个事情发生就将在主线程请求连接的过程设置为异常,这里我们可以使用多线程的方式来想后台发送请求,每向后台发送一次请求,就在程序中创建一条线程,不影响主线程的运行。

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

时间: 2024-12-26 17:59:37

Android客户端连接服务器端,向服务器端发送请求HttpURLConnection的相关文章

C#写的客户端连接 php的服务器端的小例子

php的server 端 <?php // server.php set_time_limit( 0 ); ob_implicit_flush(); $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); socket_bind( $socket, '127.0.0.1', 8880 ); socket_listen($socket); $acpt=socket_accept($socket); echo "> Acpt!\

Android客户端连接tomcat时出错:connect failed: ECONNREFUSED (Connection refused)

public static final String BASE_URL = "http://127.0.0.1:8090/HelloWord/"...; 会抛异常Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused) 解决方法: String url = "http://127.0.0.1:8090/HelloWord/"...;  修改成 pub

配置ORACLE 客户端连接到数据库

--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供

1. 配置ORACLE 客户端连接到数据库

转载自:http://blog.csdn.net/leshami/article/details/5917103 Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供了很多基于客户端或服务器的配置工具,需要搞清的是Oracle Net 中的

23Socket实现UDP服务器端和客户端连接传输

客户端 23UdpClient.cpp 代码: // 23UdpClient.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> //Windows套接字所需的头文件 #include <WINSOCK.H> //Windows套接字接口的库文件 #pragma comment(lib, "WSOCK32.LIB") //程序使用的WinSock主版本 #define

docker命令行解析以及如何向服务器端发送请求

最近在看doccker的源码,最新的master分支(估计是1.12.4,因为最新的release是1.12.3)命令行解析全部都使用了第3方的包https://github.com/spf13/cobra.然后看了一下别的分支的代码,感觉结构确实清晰了很多,可读性变高了不少.先看一下如何去使用. 客户端main()在docker/docker/cmd/docker下,可以直接使用go build编译(把vendor下的依赖包移出来就可以了). L20-58: func newDockerCom

Android 实现蓝牙客户端与服务器端通信

一.首先说明:蓝牙通信必须用手机测试,因为avd里没有相关的硬件,会报错! 好了,看看最后的效果图: 二.概述: 1.判断是否支持Bluetooth BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(bluetoothAdapter == null) { //the device doesn't support bluetooth } else { //the device support b

Android学习笔记一之客户端连接服务器

1.客户端连接服务器实例剖析: 第一步:在浏览器,客户端输入得到用户输入的内容. 第二步:浏览器得到这个网址之后,内部会将这个域名发送到DNS上进行域名解析.解析得到这个网址的IP地址之后,客户端会链接到指定的服务器上. 第三步:实现TCP/IP协议用Socket完成,使用了Socket的套接字. 第四步:服务器端的端口监听客户端的连接,这样客户端就和服务器连接上了. 2.当服务器监听到了客户端的请求之后,服务器会以三种方式返回给客户端,最常用的是以HTML,也就是网页的形式返回,还可以以XML

Android HTTP实例 使用GET方法和POST方法发送请求

Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息:用户名和年龄,使用GET和POST两种提交方式. 用浏览器打开: 不管以哪一种方式,提交以后显示如下页面,将提交的信息再显示出来. 关键代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% Str