我在网站1有一个servlet,接收到post请求后,我希望让另一个网站的servlet来进一步处理,并且获得它处理的结果,然后再在自身网站转到一个jsp页面显示结果。在asp中可以构造一个request,然后像调用函数一样调用一个url,这个函数会直接返回,然后就可以接收到response处理其中的信息。
请问Java中应该如何写。
request中是multipart/form-data的,有文件,我希望直接转给另一个网站的servlet去处理,就像调用函数那样返回response。
两个网站都是自己做的,都可以编码。

解决方案 »

  1.   

    用URLConnection 可以处理一下把数据把送到另一个servlet处理后返回
      

  2.   

    个人认为此问题的解决方案应该从webservice入手,从你描述的问题来看,应该是2个server之间的数据交互,而不是通过页面交互数据。所以你参考的应该是soap协议。
      

  3.   

    通过SOAP的确是一个好的办法,但会加大通讯量,对于楼主目前的情况来说,我认为用HttpClient开源组件将是一个非常不错的选择.HttpClient就使得你的第一个servlet变成第二个网站的servlet的IE.
      

  4.   

    to interpb(曾曾胡) :
    我用的代码:
    URL httpurl = new URL(target);
                urlConn = (HttpURLConnection)httpurl.openConnection();
                urlConn.setRequestProperty("Content-Type","multipart/form-data");
                urlConn.setRequestProperty("Connection","Keep-Alive");
                
                urlConn.setDoOutput(true);
                OutputStream out = urlConn.getOutputStream();
                byte[] byteBuffer = new byte[1024];
                ServletInputStream sis = request.getInputStream();
                try{
                 int len = sis.read(byteBuffer);
                 while(len!=-1){
                 System.out.println(String.valueOf(len));
                 out.write(byteBuffer, 0, len);
                 len = sis.read(byteBuffer);
                 }
                }catch(Exception ex){
                 ex.printStackTrace();
                }
                finally{
                    out.flush();
                    out.close();
                    sis.close();
                }
            //receive
            int res = urlConn.getResponseCode();
    在接收方总提示
    the request was rejected because no multipart boundary was found
    能给我一个代码么?
      

  5.   

    to ibiswang(神鸟)
    你说的办法也挺好的,不过我没找到他怎么直接处理HttpServletRequest?
      

  6.   

    可以了!
    URL httpurl = new URL(target);
                urlConn = (HttpURLConnection)httpurl.openConnection();
                urlConn.setRequestProperty("Content-Type",request.getContentType());
                urlConn.setRequestProperty("Content-Length", String.valueOf(request.getContentLength()));
                urlConn.setRequestProperty("Connection","Keep-Alive");
                
                urlConn.setDoOutput(true);
                OutputStream out = urlConn.getOutputStream();
                byte[] byteBuffer = new byte[1024];
                ServletInputStream sis = request.getInputStream();
                try{
                 int total = 0;
                 int len = sis.read(byteBuffer);
                 while(len!=-1){
                 total = total+len;
                 System.out.println(String.valueOf(total));
                 out.write(byteBuffer, 0, len);
                 len = sis.read(byteBuffer);
                 }
                }catch(Exception ex){
                 ex.printStackTrace();
                }
                finally{
                    out.flush();
                    out.close();
                    sis.close();
                }
            //receive
            int res = urlConn.getResponseCode();
    target是目标网站servlet的url
    request是原网站接收到的HttpServletRequest对象