HttpURLConnection

本文介绍了如何使用HttpURLConnection进行网络请求,并详细解释了其工作原理。包括创建连接、设置参数及发送GET和POST请求的过程。

任何网络连接都需要经过socket才能连接,HttpURLConnection不需要设置socket,所以,HttpURLConnection并不是底层的连接,而是在底层连接上的一个请求。这就是为什么HttpURLConneciton只是一个抽象类,自身不能被实例化的原因。HttpURLConnection只能通过URL.openConnection()方法创建具体的实例。

虽然底层的网络连接可以被多个HttpURLConnection实例共享,但每一个HttpURLConnection实例只能发送一个请求。请求结束之后,应该调用HttpURLConnection实例的InputStream或OutputStream的close()方法以释放请求的网络资源,不过这种方式对于持久化连接没用。对于持久化连接,得用disconnect()方法关闭底层连接的socket。

创建HttpURLConnection

  1. URL url = new URL("http://localhost:8080/xxx.do");    
  2.      
  3. URLConnection rulConnection = url.openConnection();// 此处的urlConnection对象实际上是根据URL的    
  4. // 请求协议(此处是http)生成的URLConnection类    
  5. // 的子类HttpURLConnection,故此处最好将其转化    
  6. // 为HttpURLConnection类型的对象,以便用到    
  7. // HttpURLConnection更多的API.如下:    
  8.      
  9. HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection;

设置HttpURLConnection参数

  1. // 设定请求的方法为"POST",默认是GET    
  2. httpUrlConnection.setRequestMethod("POST");    
  3.     
  4. // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在    
  5. // http正文内,因此需要设为true, 默认情况下是false;    
  6. httpUrlConnection.setDoOutput(true);    
  7.      
  8. // 设置是否从httpUrlConnection读入,默认情况下是true;    
  9. httpUrlConnection.setDoInput(true);    
  10.      
  11. // Post 请求不能使用缓存    
  12. httpUrlConnection.setUseCaches(false);    
  13.      
  14. // 设定传送的内容类型是可序列化的java对象    
  15. // (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)    
  16. httpUrlConnection.setRequestProperty("Content-type""application/x-java-serialized-object");    
  17.    
  18. // 连接,从上述url.openConnection()至此的配置必须要在connect之前完成,    
  19. httpUrlConnection.connect();
1:> URL请求的类别: 
分为二类,GET与POST请求。二者的区别在于: 
     a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, 
     b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内


URL url = new URL("http://localhost:8080/TestHttpURLConnectionPro/index.jsp");   
 
URLConnection rulConnection = url.openConnection();  
        // 此处的urlConnection对象实际上是根据URL的   
          // 请求协议(此处是http)生成的URLConnection类   
          // 的子类HttpURLConnection,故此处最好将其转化   
          // 为HttpURLConnection类型的对象,以便用到   
          // HttpURLConnection更多的API.如下:   
   
HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection;


// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在   
 // http正文内,因此需要设为true, 默认情况下是false;   
 httpUrlConnection.setDoOutput(true);   
 
 // 设置是否从httpUrlConnection读入,默认情况下是true;   
 httpUrlConnection.setDoInput(true);   
 
 // Post 请求不能使用缓存   
 httpUrlConnection.setUseCaches(false);   
 
 // 设定传送的内容类型是可序列化的java对象   
 // (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)   
 httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");   
 
 // 设定请求的方法为"POST",默认是GET   
 httpUrlConnection.setRequestMethod("POST");   
 
 // 连接,从上述第2条中url.openConnection()至此的配置必须要在connect之前完成,   
         httpUrlConnection.connect();


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值