任何网络连接都需要经过socket才能连接,HttpURLConnection不需要设置socket,所以,HttpURLConnection并不是底层的连接,而是在底层连接上的一个请求。这就是为什么HttpURLConneciton只是一个抽象类,自身不能被实例化的原因。HttpURLConnection只能通过URL.openConnection()方法创建具体的实例。
HttpClient 是一个接口, 用DefaultHttpClient(); 来创建实例化.
虽然底层的网络连接可以被多个HttpURLConnection实例共享,但每一个HttpURLConnection实例只能发送一个请求。请求结束之后,应该调用HttpURLConnection实例的InputStream或OutputStream的close()方法以释放请求的网络资源,不过这种方式对于持久化连接没用。对于持久化连接,得用disconnect()方法关闭底层连接的socket。
httpUrlConnection.setRequestMethod("POST"); //设置请求方式 httpUrlConnection.connect(); //连接,不用可以用getINputStream代替
//发送请求参数 OutputStream outputStream = conn.getOutputStream(); outputStream.write(entity);
// 设定传送的内容类型是可序列化的java对象 (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException) httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");
设置连接参数的方法
setAllowUserInteraction setDoInput //设置是否从httpUrlCOnnection读入,默认情况是true setDoOutput //设置是否向httpUrlConnection输入,post请求中,参数在http正文中,因此要设置为true,默认情况下是false setIfModifiedSince setUseCaches //设置是否缓存 post请求不能缓存 setDefaultAllowUserInteraction setDefaultUseCaches
设置请求头参数
HTTP请求允许一个key带多个用逗号分开的values
setRequestProperty("Charsert","UTF-8"); //会覆盖已经存在的key的所有values addRequestProperty(key,value) //在原来key的基础上继续添加其他value。
setRequestProperty和addRequestProperty的区别就是,setRequestProperty,有清零重新赋值的作用。而addRequestProperty则是发送URL请求
getOutputStream //用于post 请求中,把请求参数传递给服务器
获取响应
getContent 请求成功后,可以获取响应中的数据 getHeaderField 标红用的最多 getInputStream
获取响应头信息头
getContentEncoding getContentLength getContentType getDate getExpiration getLastModifed
时间: 2024-08-04 20:02:15