Android网络编程

java.net.*(标准Java接口)提供与互联网有关的类。

 

Url url = "http://www.baidu.com";



HttpUrlConnection http = (HttpUrlConnection)url.openConnection();



int nRc = http.getResponseCode();  //获得链接状态



if(nRc == HttpURLConnection.HTTP_OK){



    InputStraem is = http.getInputStream();



}

 

 

Apache接口

    Android提供的Apache HttpClient,功能更加完善,为客户端的HTTP变成提供搞笑、最新、功能丰富的工具包支持。

    还提供了对它的一些封装和扩展,例如设置缺省的HTTP超时和缓存大小。

    功能主要包括创建HttpClient以及Get/Post、HttpRequest等对象,设置连接参数,执行HTTP操作,处理服务器返回结果等功能。

   

 

 1 //创建HttpClient,DefaultHttpClient表示默认属性

 2 

 3 HttpClient hc = new DefaultHttpClient();

 4 

 5 HttpGet get = new HttpGet(url);

 6 

 7 HttpResponse rp = hc.execute(get);

 8 

 9  

10 

11 if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)

12 

13     InputStream is = rp.getEntity().getContent();

 

Android网络接口

    android.net.*包实际上是通过对Apache中HttpClient的封装来实现的一个HTTP编程接口。同事还提供了HTTP请求队列管理以及HTTP连接池管理,以提高并发请求情况下的处理效率,除此之外还有网络状态监视等接口、网络访问的Socket、常用的URL类以及有关Wifi相关的类等。

 

    Andrid中的Socket连接:

 1 //IP地址

 2 

 3 InetAddress inet = InetAddress.getByName("192.168.0.1");

 4 

 5  

 6 

 7 //端口

 8 

 9 Socket client = new Socket(inet,61020,true);

10 

11  

12 

13 //取得数据

14 

15 InputStream in = client.getInputStream();

16 

17 OutputStream out = client.getOutputStream();

18 

19  

 

 

Http通信

    Http(Hyper Text Transfer Protocol,超文本传输协议)用于传送WWW方式的数据。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含了请求的方法URL、协议版本,以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本、成功或者错误编码,还包括服务器信息、实体元信息以及可能的实体内容。它是一个属于应用层的面向对象的协议,由于其简介、快速,适用于分布式超媒体信息系统。

    Android提供了HttpUrlConnection和HttpClient接口来开发HTTP程序。

 

HttpURLConnection是java的标准类,继承自URLConnection类,URLConnection与HTTPURLConnection都是抽象类,无法直接实例化对象。其对象主要通过URL的openConnection方法获得:

    

Url url = new URL(“http://www.baidu.com”);



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

 

 

openConnection方法只创建URLConnection或者HttpURLConnection实例,但是并不进行真正的连接操作。并且每次openConnection都将创建一个新的实例。

 

   

 //设置输入输出流



    connection.setDoOutput(true);



    connection.setDoInput(true);



   



    //设置传输方式:post\get



    connection.setRequestMethod("POST");



   



    //POst请求不能使用缓存



    connection.setUseCaches(false);



   



    //关闭连接



    connection.disconnect();

 

HttpURLConnection默认使用GET方式。

 

采用HttpUrlConnection的POST方式获取数据:

   

  1  //访问的URL地址

  2 

  3     String httpurl = "http://www.baidu.com/";

  4 

  5    

  6 

  7     //保存获取的数据

  8 

  9     URL url = null;

 10 

 11     try{

 12 

 13        url = new URL(httpurl);

 14 

 15     }catch{MalformedURLException e}{

 16 

 17        //错误信息

 18 

 19     }

 20 

 21    

 22 

 23     if(url != null){

 24 

 25        try{

 26 

 27            //使用HttpURLConnection打开连接

 28 

 29            HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();

 30 

 31           

 32 

 33            //采用Post传递数据时输入、输出应该设置为true

 34 

 35            urlconn.setDoOutput(true);

 36 

 37            urlconn.setDoInput(true);

 38 

 39           

 40 

 41            //设置以post方式

 42 

 43            urlconn.setRequestMethod("POST");

 44 

 45           

 46 

 47            //post请求不能使用缓存

 48 

 49            urlconn.setUseCaches(false);

 50 

 51           

 52 

 53            //配置本次连接的Content-type为"application/x-www-form-urlencoded"

 54 

 55            urlconn.setRequestProperty("Content-type","application/x-www-form-urlencoded");

 56 

 57           

 58 

 59            //以上所有的配置都需要在进行connect方法之前完成

 60 

 61            urlconn.connect();

 62 

 63           

 64 

 65            //DataOutputStream流

 66 

 67            DataOutputStream out = new DataOutputStream(urlconn.getOutputStream());

 68 

 69           

 70 

 71            //设置要上传的参数

 72 

 73            String content = "par="+URLEncoder.encode("ABCD","gb2312");

 74 

 75           

 76 

 77            //将要上传的内容写入到流中

 78 

 79            out.writeBytes(content);

 80 

 81           

 82 

 83            out.flush();

 84 

 85            out.close();

 86 

 87           

 88 

 89            String inputLine = null;

 90 

 91            //获取数据

 92 

 93            BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream()));

 94 

 95           

 96 

 97            while(((inputLine = reader.readLine())!=null)){

 98 

 99               resultData += inputLine + "\n";

100 

101            }

102 

103           

104 

105            reader.close();

106 

107           

108 

109            urlconn.disconnect();

110 

111           

112 

113        }catch(IOException e){}

114 

115     }

你可能感兴趣的:(android)