比如 我后台需要调用下面的SERVLET
http://xxx.xxx.xxx.xxx:8080/xxx/xxx
JAVA 后台 怎么写

解决方案 »

  1.   

    这个调用是指啥? RequestDispatcher.forward() 直接跳转过去?还是想把该URL的内容抓出来另外处理?如果是后者,可以用 new URL("http://xxx.xxx.xxx.xxx:8080/xxx/xxx").getConnection();如果还需要POST参数过去,可以用开源的HTTPClient组件,来完整模拟整个浏览器提交的动作。
      

  2.   

    就是 我JAVA后台 去 请求 另一个 服务器上面 SERVLET  地址
    需要有参数的 
      

  3.   

    直接XXServlet 如果传参的话 XXServlet?username=XX 和浏览器访问servlet一样
      

  4.   

    不是跳转 就是 我后台   去触发一下 另一个  机器 的 SERVLET  就行了 
      

  5.   

    就用HTTP请求 发送?
    类似这个 ?
    /** 
         * 发送HTTP请求 
         *  
         * @param urlString 
         * @return 响映对象 
         * @throws IOException 
         */  
        private HttpRespons send(String urlString, String method,  
                Map<String, String> parameters, Map<String, String> propertys)  
                throws IOException {  
            HttpURLConnection urlConnection = null;  
       
            if (method.equalsIgnoreCase("GET") && parameters != null) {  
                StringBuffer param = new StringBuffer();  
                int i = 0;  
                for (String key : parameters.keySet()) {  
                    if (i == 0)  
                        param.append("?");  
                    else  
                        param.append("&");  
                    param.append(key).append("=").append(parameters.get(key));  
                    i++;  
                }  
                urlString += param;  
            }  
            URL url = new URL(urlString);  
            urlConnection = (HttpURLConnection) url.openConnection();  
       
            urlConnection.setRequestMethod(method);  
            urlConnection.setDoOutput(true);  
            urlConnection.setDoInput(true);  
            urlConnection.setUseCaches(false);  
       
            if (propertys != null)  
                for (String key : propertys.keySet()) {  
                    urlConnection.addRequestProperty(key, propertys.get(key));  
                }  
       
            if (method.equalsIgnoreCase("POST") && parameters != null) {  
                StringBuffer param = new StringBuffer();  
                for (String key : parameters.keySet()) {  
                    param.append("&");  
                    param.append(key).append("=").append(parameters.get(key));  
                }  
                urlConnection.getOutputStream().write(param.toString().getBytes());  
                urlConnection.getOutputStream().flush();  
                urlConnection.getOutputStream().close();  
            }  
       
            return this.makeContent(urlString, urlConnection);  
        }  
       
        /** 
         * 得到响应对象 
         *  
         * @param urlConnection 
         * @return 响应对象 
         * @throws IOException 
         */  
        private HttpRespons makeContent(String urlString,  
                HttpURLConnection urlConnection) throws IOException {  
            HttpRespons httpResponser = new HttpRespons();  
            try {  
                InputStream in = urlConnection.getInputStream();  
                BufferedReader bufferedReader = new BufferedReader(  
                        new InputStreamReader(in));  
                httpResponser.contentCollection = new Vector<String>();  
                StringBuffer temp = new StringBuffer();  
                String line = bufferedReader.readLine();  
                while (line != null) {  
                    httpResponser.contentCollection.add(line);  
                    temp.append(line).append("\r\n");  
                    line = bufferedReader.readLine();  
                }  
                bufferedReader.close();  
       
                String ecod = urlConnection.getContentEncoding();  
                if (ecod == null)  
                    ecod = this.defaultContentEncoding;  
       
                httpResponser.urlString = urlString;  
       
                httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();  
                httpResponser.file = urlConnection.getURL().getFile();  
                httpResponser.host = urlConnection.getURL().getHost();  
                httpResponser.path = urlConnection.getURL().getPath();  
                httpResponser.port = urlConnection.getURL().getPort();  
                httpResponser.protocol = urlConnection.getURL().getProtocol();  
                httpResponser.query = urlConnection.getURL().getQuery();  
                httpResponser.ref = urlConnection.getURL().getRef();  
                httpResponser.userInfo = urlConnection.getURL().getUserInfo();  
       
                httpResponser.content = new String(temp.toString().getBytes(), ecod);  
                httpResponser.contentEncoding = ecod;  
                httpResponser.code = urlConnection.getResponseCode();  
                httpResponser.message = urlConnection.getResponseMessage();  
                httpResponser.contentType = urlConnection.getContentType();  
                httpResponser.method = urlConnection.getRequestMethod();  
                httpResponser.connectTimeout = urlConnection.getConnectTimeout();  
                httpResponser.readTimeout = urlConnection.getReadTimeout();  
       
                return httpResponser;  
            } catch (IOException e) {  
                throw e;  
            } finally {  
                if (urlConnection != null)  
                    urlConnection.disconnect();  
            }  
        }  
      

  6.   

    对,就是类似你5楼的代码,不过如果只是个触发而不需要POST参数的话,不需要这么写的这么复杂HttpURLConnection cn = new URL("http://xxx.xxx.xxx.xxx:8080/xxx/xxx").getConnection();
    cn.getInputStream(); // 把InputStream读完,看看有没有报错就行了。