我有两个web appli,tapestry appli和一个简单的web appli(servelt)。在tapestry appli中,我有一个表单,当它被发送时,我调用一个httpClient,使用apache的httpClient向作者appli发送一些信息。像这样
void onSubmitFromForm() {
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost:8080/appli2/recep");
post.setHeader("referer", "http://localhost:9090/app1/start");
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("_data", getData());
post.setEntity(new UrlEncodedFormEntity(param));
HttpResponse response = client.execute(post);
response ?????
} catch (Exception e) {
e.printStackTrace();
}
}
在我的简单web appli(2)的servelt recep中,我也像下面那样做
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(request.getHeader("referer"));
post.setHeader("p",getP());
client.execute(post);
} catch (Exception e) {
e.printStackTrace();
}
}
所以,我的recep从我的表单中恢复了数据,但是它无法响应它,我会不会那么狡猾的应用程序可以从简单的Web应用程序中获取pa'P'? 谢谢
答案 0 :(得分:0)
如果我更正,您希望您的tapestry应用程序将从Tapestry中提交的表单提交的一些表单数据发送到另一个应用程序上运行的servlet。
如果这是您想要的,那么缺少的是请求的haneling和在servlet中构建响应。因为你的tapestry页面和你的servlet都是POST意思,它们都没有为你的HttpClient构建响应。
在你的servlet中你可以:
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.println(getP());
out.close();
}
并在你的tapesty表单处理程序中处理响应。