HttpURLConnection用法详解(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-18 20:56 点击:

p> 

p>4:>  HttpURLConnection连接问题: 

p> 

p> 1 // 此处getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法,   

p>2  // 所以在开发中不调用上述的connect()也可以)。   

p>3  OutputStream outStrm = httpUrlConnection.getOutputStream(); 

p>5:> HttpURLConnection写数据与发送数据问题: 

p> 

p> 

p> 1  1 // 现在通过输出流对象构建对象输出流对象,以实现输出可序列化的对象。   

p> 2   2  ObjectOutputStream objOutputStrm = new ObjectOutputStream(outStrm);   

p> 3  3   

p> 4  4  // 向对象输出流写出数据,这些数据将存到内存缓冲区中   

p> 5   5  objOutputStrm.writeObject(new String("我是测试数据"));   

p> 6  6   

p> 7  7  // 刷新对象输出流,将任何字节都写入潜在的流中(些处为ObjectOutputStream)   

p> 8   8  objOutputStm.flush();   

p> 9  9   

p>10  10  // 关闭流对象。此时,不能再向对象输出流写入任何数据,先前写入的数据存在于内存缓冲区中,   

p>11  11  // 在调用下边的getInputStream()函数时才把准备好的http请求正式发送到服务器   

p>12  12  objOutputStm.close();   

p>13  13   

p>14  14  // 调用HttpURLConnection连接对象的getInputStream()函数,   

p>15  15  // 将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端。   

p>16  16  InputStream inStrm = httpConn.getInputStream(); // <===注意,实际发送请求的代码段就在这里   

p>17  17   

p>18 18  // 上边的httpConn.getInputStream()方法已调用,本次HTTP请求已结束,下边向对象输出流的输出已无意义,   

p>19 19  // 既使对象输出流没有调用close()方法,下边的操作也不会向对象输出流写入任何数据.   

p>20 20  // 因此,要重新发送数据时需要重新创建连接、重新设参数、重新创建流对象、重新写数据、   

p>21 21  // 重新发送数据(至于是否不用重新这些操作需要再研究)   

p>22 22  objOutputStm.writeObject(new String(""));   

p>23 23 httpConn.getInputStream()

p> 

p>总结:a:) HttpURLConnection的connect()函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。 

p> 

p>    无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数里面才正式发送出去。 

p>       b:) 在用POST方式发送URL请求时,URL请求参数的设定顺序是重中之重, 

p>    对connection对象的一切配置(那一堆set函数) 

p>    都必须要在connect()函数执行之前完成。而对outputStream的写操作,又必须要在inputStream的读操作之前。 

p>    这些顺序实际上是由http请求的格式决定的。 

p>    如果inputStream读操作在outputStream的写操作之前,会抛出例外: 
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1