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的写操作之前,会抛出例外:
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>