Tapestry,请求从另一个应用程序处理

时间:2012-06-27 15:50:24

标签: httpclient tapestry

我有两个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'? 谢谢

1 个答案:

答案 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表单处理程序中处理响应。