HttpURLConnection用法
在SDK中的URLConnection链接Servlet的问题
1.URL的请求分类GET和POST
GET请求可以获取页面静态的值,参数放URL后,传给Serverlct
POST的参数是存放于http请求的正文中
2.URLConnection的对象问题
根据URL生成URLconnection,URLConnection在转成HttpUrlConnection.
URL url = new URL("www.baidu.com");
HttpUrlConnection httpUrlConnection = (HttpURLConnection) url.openConnection();
3.HttpURLConnection对象参数问题
设置是否向HttpURLConnection输出,因为这个是Post请求,参数要放在http正文中,因此要设置为true
httpUrlConnection.setDoOutput(true);
设置是否从httpUrlConnection读入,默认情况下是true
httpUrlConnection.setDoInput(true);
Post请求不能使用缓存
httpUrlConnection.setUseCaches(false);
设定传输的内容结果是可以序列化的JAVA对象
(假设不设置,在传送序列化对象时,当WEB服务器默认的不是这种类型时可能抛出java.io.eofexcrption)
httpUrlConnection.setRequestProperty("Content-type","application/x-java-serialized-object");
//设定请求的方式必须是POST,默认时GET
httpUrlConnection.setRequestMethod("Post");
分装完毕
httpUrlConnection.connect();
getOutPutStream会隐含着connect,所以在开发环境中不调用上述的connect()也可以
OutputStream outStrm = httpUrlConnection.getOutputStream()
现在通过输出流对象构建对象的输出流,以实现输出可序列化的对象
OutputStreamWriter out = new OutputStreamWriter(httpUrlConnection.getOutputStream(), "UTF-8");
向对象输出流写数据,这些数据保存到内存中
objectOutputStream.writeObject("测试字符串")
//刷新对象输出流,将任何字节都写入潜在流中
objOutputStm.flush()
// 定义BufferedReader输入流来读取URL的响应
BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line
StringBuilder result = new StringBuilder();;
while ((line = in.readLine()) != null) {
result.append(line);
}
用finally{
关闭输出流和输入流。
in.close();
}
//关闭流对象,不在对输出流对象写入任何东西,先前写入的数据存在于缓存中
objOutputStm.close();
调用httpURLConnection连接对象的getInputStream()函数
将内存缓冲区封装好完整的HTTP请求电文发送到服务端
InputStream inStrm = httpConn.getInputStream();