今天看hessian(版本4.0.7)调用源码时候发现com.caucho.hessian.server.HessianServlet的service方法有以下几句:
于是跟踪看客户端调用是在哪里设置调用方法头为post的,最后发现在类
sun.net.www.protocol.http.HttpURLConnection(查看这个类的源代码,需要反编译)中方法getOutputStream()中进行设置的:
调用这个方法的类是com.caucho.hessian.client.HessianURLConnection
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (!req.getMethod().equals("POST")) {
res.sendError(500, "Hessian Requires POST");
PrintWriter out = res.getWriter();
res.setContentType("text/html");
out.println("<h1>Hessian Requires POST</h1>");
return;
}
于是跟踪看客户端调用是在哪里设置调用方法头为post的,最后发现在类
sun.net.www.protocol.http.HttpURLConnection(查看这个类的源代码,需要反编译)中方法getOutputStream()中进行设置的:
if (this.method.equals("GET")) {
this.method = "POST";
}
调用这个方法的类是com.caucho.hessian.client.HessianURLConnection
public OutputStream getOutputStream() throws IOException {
//此处_conn为sun.net.www.protocol.http.HttpURLConnection
return _conn.getOutputStream();
}