美文网首页Android知识Android开发
网络技术-HttpURLConnection

网络技术-HttpURLConnection

作者: 大话程序 | 来源:发表于2016-09-29 08:37 被阅读239次

    使用HttpURLConnection发送HTTP请求

    • 获取HttpURLConnection对象。一般只需new出一个URL对象,并传入目标的网络地址,然后调用openConnec()方法

      URL url = new URL("http://www.baidu.com");
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      
    • 设置HTTP请求所使用的方法(GETPOST

      • GET 方式是表示从服务器那里获取数据
      • POST 方式是表示希望提交数据给服务器
      connection.setRequestMethod("POST");
      
    • 私人订制连接(设置连接超时、读取超时的毫秒数以及服务器希望得到的一些消息头等)

      //设置读取超时
      connection.setReadTimeout(5000);
      //设置连接超时
      connection.setConnectTimeout(5000);
      
    • 调用getInputStream()方法获取到服务器返回的输入流

      InputStream inputStream = connection.getInputStream();
      
    • 调用disconnect()方法将HTTP连接关闭掉

      connection.disconnect();
      

    提交数据


    GET方式

    • get方式提交的数据是直接拼接在url的末尾(键值对方式)

      final String path = "http://192.168.1.104/Web/servlet/CheckLogin?name=" + name + "&pass=" + pass;
      
    • 发送get请求

      URL url = new URL(path);
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");
      conn.setReadTimeout(5000);
      conn.setConnectTimeout(5000);
      if(conn.getResponseCode() == 200){
          InputStream inputStream = connection.getInputStream();
      }
      
    • 浏览器在发送请求携带数据时会对数据进行URL编码,我们写代码时也需要为中文进行URL编码

      String path = "http://192.168.1.104/Web/servlet/CheckLogin?name=" + URLEncoder.encode(name) + "&pass=" + pass;
      

    POST

    • post提交数据是用流写给服务器的

    • 协议头中多了两个属性

      • Content-Type: application/x-www-form-urlencoded,描述提交的数据的mimetype
      • Content-Length: 32,描述提交的数据的长度
      /*给请求头添加post多出来的两个属性*/
      //进行URL编码
      String data = "name=" + URLEncoder.encode(name) + "&pass=" + pass;
      //手动设置两个属性
      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
      conn.setRequestProperty("Content-Length", data.length() + "");
      
    • 设置允许打开post请求的流

      conn.setDoOutput(true);
      
    • 获取连接对象的输出流,往流里写要提交给服务器的数据

      OutputStream os = conn.getOutputStream();
      os.write(data.getBytes());
      

    相关文章

      网友评论

        本文标题:网络技术-HttpURLConnection

        本文链接:https://www.haomeiwen.com/subject/jrpkyttx.html