zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    web自动化测试-D2-学习笔记之二(HTML基础之JS)
    web自动化测试-D2-学习笔记之一(HTML基础之DOM操作)
    web自动化测试-D1-学习笔记之一(HTML 和 CSS基础)
    Selenium-常问面试题
    python自动化测试-D11-学习笔记之一(yaml文件,ddt)
    python习题:封装一个日志模块
    python自动化测试-D10-学习笔记之二(Python–logging模块)
    python习题:unittest参数化-数据从文件或excel中读取
    python自动化测试-D10-学习笔记之一(unittest参数化)
    python自动化测试-D9-学习笔记之二(异常处理)
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/2793326.html
Copyright © 2011-2022 走看看