Android网络编程 HttpClient Socket



目前Android平台有3中网络通信接口:

1、java.net.*(标准的java接口):URLConnection/HttpURLConnection类。

2、org.apache(Apache接口):HttpClient接口

3、Android.net(Android网络接口):通过对Apache的HttpClient接口的封装来实现的一个Http编程接口。

一、标准的java接口:

通过Http请求一般有两种方式:get与post

get方式:get请求可以获取静态页面,也可以把参数放到URL字符串之后,传递到服务器。

post与get的不同之处在于,post是项参数放在http请求数据中的。

标准java接口下的网络通信需要借助于HttpURLConnection抽象类,该类继承自URLConnection抽象类。

由于HttpURLConnection和URLConnection都是抽象类,无法实例化,其对象通过openConnection方法获得。

创建一个HttpURLConnection连接的代码如下:

URL url = new URL("http://www.google.com");

HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();

openConnection方法只创建URLConnection或HttpURLConnection实例,但并不进行真正的连接操作,

并且每次openConnection之后都会创建一个新的实例。

如下是一些属性设置:

connection.setDoOutput(true) //设置输入输出流

connection.setDoInput(true);

设置请求方式

connection.setRequestMethod("POST");

connection.setUseCaches(false)//设置post请求不能使用缓存

connection.disconnection();//释放连接。

二、Apache接口:HttpClient接口

HttpClient接口是对java.net接口做了一层封装,更适合Android开发联网应用。

获取HttpClient的方式:

HttpClient client = new DefaultHttpClient(); //DefaultHttpClient是默认的http客户端。通它可以创建一个HTTP连接。

HttpResponse是一个Http连接响应,当执行一个HTTP请求后就会返回一个HttpResponse,可以通过他来获得一些响应信息。

HttpResponse httpResponse = client.execute(httpRequest);

执行HttpClient时需要传入请求方式:get、post

get:HttpGet httpRequest = new HttpGet(url);

psot:HttpPost httpRequest = new HttpPost(url);

post方式需要将请求参数保存到NameValuePair中。

if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //成功 }

Socket通信:

Socket有两种主要的操作方式:面向连接的和无连接的。

面向连接的操作方式(使用TCP协议):就象一部电台,必须建立一个连接和一个呼叫

优点:安全可靠。

确定:传输效率低。

无连接的操作方式(UDP协议):就像邮件投递,没有保证。

优点:传输效率高。

确定:可靠性差。

Socket编程原理:

通过使用java.net包中提供的两个类:Socket和ServerSocket:分别用来表示双向连接的客户端和服务器。

客户端: Socket:Socket socket= newSocket(IP,port);//参数为服务器的IP和端口号。

使用Socket创建客户端的步骤如下:

1、通过IP地址和端口实例化Socket,请求连接服务器。

2、获取Socket上的流以进行读写。

3、把流包装进BufferReader/PrintWriter的实例

4、对Socket进行读写

5、关闭打开的流。

服务器: ServerSocket server = new ServerSocket(port);//服务器的端口。

使用ServerSocket创建服务器步骤如下:

1、指定端口实例化一个ServerSocket

2、调用ServerSocket的accept()方法以在等待期间造成阻塞。

3、获取位于该底层Socket的流已进行读写操作

4、将数据封装成流

5、对Socket进行读写

6、关闭打开流。

时间: 2024-10-12 01:54:25

Android网络编程 HttpClient Socket的相关文章

Android网络编程(一)---Socket基础

Socket通常称为""套接字.Socket字面上的中文意思为"插座".一台服务器可能会提供很多服务,每种服务对应一个Socket,而客户的"插头"也是一个Socket.Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.Socket把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议.Socket用于描述IP地址和端口,是一个通信链的句柄.应

Android网络编程之使用HttpClient批量上传文件

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推荐使用了.随之替代它的类是MultipartEntityBuilder. 下面

Android网络编程系列 一 Socket抽象层

在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象层.本篇文章将会让我们清楚的了解和学会使用Socket. 什么是Socket?它又是如何运作的?它的表现形式是什么?等等这些问题,本篇文章将逐步的揭晓. 一. 什么是Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,你可以借助它建立TCP连接等等,而http是个应用层的

Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听

请尊重他人的劳动成果,转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 运行效果图: 我曾在<Android网络编程之使用HttpClient批量上传文件>一文中介绍过如何通过HttpClient实现多文件上传和服务器的接收.在上一篇主要使用Handler+HttpClient的方式实现文件上传.这一篇将介绍使用AsyncTask+HttpClient实现文件上传并监听上传进度. 监控进度实现: 首先

Android 网络编程 Socket

1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List<Socket> socketList = new ArrayList<Socket>(); public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(

Android利用网络编程HttpClient批量上传(一个)

请尊重他人的劳动成果.转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP訪问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友能够去看一下.在这里主要介绍怎样通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但如今这个类已经不在推荐使用了. 随之替代它的类是MultipartEntityBuilder. 以

Android网络编程(二)HttpClient与HttpURLConnection

相关文章 Android网络编程(一)HTTP协议原理 前言 上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的.无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库. 1.HttpClient Android SDK中包含了HttpClient,在Android6.0版本直接删除了HttpClient类库,如果仍想使用则解决方法是: 如果使用的是eclipse

Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie

前言 在编程过程中总结归纳出来的一种编程经验,从而形成的设计思想称为设计模式. 设计模式有23种.它适用于所有的编程语言. 常用的有创新型的设计模式:简单工厂.抽象工厂和单例模式:行为型的设计模式:模板设计模式.观察者模式和命令模式:结构性的设计模式:适配器设计模式.代理模式(静态和动态两种,典型的有在spring的AOP编程中使用)和装饰器设计模式. 正文 单例模式(singleton) 保证一个类在内存中只能创建一个实例. 1.实现步骤: 1)将构造器私有化,即使用private修饰构造器

转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推