HttpURLConnection 用法详解


一.继承关系

   1.  java.lang.Object
          --java.net.URLConnection
               --java.net.HttpURLConnection
二.URLConnection类
  1.URLConnection代表应用程序和 URL 之间的通信链接。
  2.作用:代表应用程序和 URL 之间的通信链接;
  3. 创建一个到 URL 的连接需要几个步骤:
   (1)通过在 URL 上调用  openConnection 方法创建连接对象;
   (2)处理设置参数和一般请求属性;
   (3)使用  connect 方法建立到远程对象的实际连接;
   (4)远程对象变为可用。远程对象的头字段和内容变为可访问;
三.HttpURLConnection
  1 每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字;
  2. 对于Connection的对象的设置很重要,是有顺序的;
     connection的设置(很多set函数)必须在函数执行之前完成;Outputstream的写操作必须在Inputstream读操作之前。
四.用法
     1.创建连接:
     URL url = new URL("http://localhost:8080/TestHttpURLConnectionPro/index.jsp"); 
     HttpURLConnection conn = ( HttpURLConnection) url.openConnection();

  2.设置Connection参数:

      conn.setRequestMethod(  "POST" );         // 提交模式
 conn.setRequestProperty(  "Content-Type" ,  "application/json;charset=UTF-8"  );               //设置请求属性
     conn.setRequestProperty(  "User-Agent" "Autoyol_gpsCenter"  );
     conn.setConnectTimeout(100000);  //连接超时 单位毫秒
     conn.setReadTimeout(100000);     //读取超时 单位毫秒
     conn.setDoOutput(  true );          //是否输入参数
     conn.setDoInput(  true );        //是否读取参数
    3.连接:
     conn.connect();
   4.获取写数据流:
     OutputStream outStrm = httpUrlConnection.getOutputStream();
   5.写数据:
     outStrm .write(bytes);  // 输入参数
     outStrm. flush();
     outStrm.close();
   6.读数据:
     InputStream in = conn.getInputStream();
     byte [] buffer =  new   byte [521];
     ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
     for  (  int  len = 0; (len = in.read(buffer)) > 0;) {
          baos.write(buffer, 0, len);
     }
     String returnValue =  new  String(baos.toByteArray(),  "utf-8"  );
     reg= JSON. parseObject(returnValue, ReturnMessage. class  );
     baos.flush();
     baos.close();
     in.close();
     conn.disconnect();
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM