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("");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、关闭打开流。

用敬业的精神去面对每一份挑战,

Android网络编程 HttpClient Socket

相关文章:

你感兴趣的文章:

标签云: