URLConnection笔记

建立URLConnection

URL url = new URL(http://localhost:8080/wappush/ServletTest);

URLConnection uc = url.openConnection();

要读写连接,必须做相应设置:

uc.setDoInput(true);

uc.setDoOutput(true);

这两条语句的顺序可以随意。

Get还是Post

如果本次连接既要发送数据也要获得响应,必须先调用了URLConnectiongetOutputStream()方法,才能再调用getInputStream()方法,否则会产生异常:java.net.ProtocolException: Cannot write output after reading input.

只要调用了URLConnectiongetOutputStream()方法,对应的Servlet就会执行doPost方法,如果只调用了getInputStream()方法,则对应的Servlet会执行doGet方法。如果不调用上述两个方法中的任何一个,则对应的Servlet不执行任何操作。

 

测试用的Servlet

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest extends HttpServlet
{
	public void doGet(HttpServletRequest req, HttpServletResponse res)
		throws IOException, ServletException
	{
		System.out.println(getTimeString() + " doGet()");
	}

	public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws IOException, ServletException
	{
		System.out.println(getTimeString() + " doPost()");
	}
	private String getTimeString()
	{
		return new SimpleDateFormat("HH:mm:ss").format(new Date());
	}
}

 

模拟表单提交

 

DataOutputStream out = new DataOutputStream(new BufferedOutputStream(uc.getOutputStream()));
StringBuffer sb = new StringBuffer();
sb.append("name=sam&age=26&phoneNumber=13632624392");
sb.append("&Text=test&url=http://wap.haoxi.com");
out.writeBytes(sb.toString());
out.flush();
out.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
reader.close();

 

对应的Servlet中,可以用以下方法

private void printParameters(HttpServletRequest req)

{

Enumeration e = req.getParameterNames();

String pName;

while (e.hasMoreElements())

{

pName = (String)e.nextElement();

System.out.println(pName + "=" + req.getParameter(pName));

}

}

得到输出结果:

name=sam

Text=test

url=http://wap.haoxi.com

phoneNumber=13632624392

age=26

<!--EndFragment-->

 

你可能感兴趣的:(.net,servlet,WAP)