局域网有个自动运行的程序,为了探测该程序是否正常运行,我想做个Thread,在Thread中每5秒调用一次那个程序的Servlet
不过发现servlet好象都是jsp之类的在调用,如何在Java类中自动调用,还有:如果可以调用,调用出异常是否就证明程序挂掉了?
请回答

解决方案 »

  1.   

    本帖最后由 java2000_net 于 2008-01-26 16:10:43 编辑
      

  2.   

    URL url =new URL("http://192.168.61.170:8080/jp/AliveOrDeadServlet?lsIP=[3ffe:ffff:0:f100::100]&reportMsg=from alive to dead");
    HttpURLConnection con = (HttpURLConnection)url.openConnection();
    BufferedReader in =new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputline;
    while((inputline=in.readLine())!=null)
    {
    System.out.println(inputline);
    }
    in.close();
    System.out.println("ok");按您说的写,结果出错了
    Exception in thread "main" java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at aliveordead.CSThread.main(CSThread.java:34)出错的行在BufferedReader in =new BufferedReader(new InputStreamReader(con.getInputStream()));
      

  3.   

    第一,你连接 www.csdn.net 看看,是否正常
    如果不正常,则代码有问题,先修改代码第二,在IE里面打开那个连接看看,如果不能用,则去调试那面的程序或者网络配置吧第二,连接你的servlet, 如果出现问题,则只能说明那个servlet不能用,或者把代码修改为
    InputStream is = con.getInputStream();
    is.read(); // 只需要读取一个byte,就能证明那面是可以连接的,否则抛出异常,servlet不能用
      

  4.   

    你的那个url里面有空格等,建议先编码一下
    URL url = URL(URLEncoder("http://192.168.61.170:8080/jp/AliveOrDeadServlet?lsIP=[3ffe:ffff:0:f100::100]&reportMsg=from alive to dead","GBK"));
      

  5.   

    连http://www.csdn.net是可用的
    但是连 servlet不可用,是不是因为servlet没有返回值?下面是我Servlet的doget和dopost方法里的处理String lsIP=request.getParameter("lsIP");
    String reportMsg=request.getParameter("reportMsg");
    response.setContentType("Text/Html");
    PrintWriter pw = response.getWriter();
    pw.write("welcome to here"+lsIP+"###"+reportMsg);
    pw.flush();
    pw.close();

    response.flushBuffer();
    在IE中访问Servlet是没问题的,为什么URLCONNECTION访问出错
      

  6.   

    解决了,果然像您说的
    URL url =new URL("http://192.168.61.170:8080/jp/AliveOrDeadServlet?lsIP=[3ffe:ffff:0:f100::100]&reportMsg=from%20dead%20to%20alive");
    就可以了.准备结帖了,最后问一下,这种方法...是探测的最佳选择吗?不出异常就能保证那边服务可用吗?
      

  7.   

    welcome   to   here,
    你不是有返回值吗?在IE里面也应该有这个显示才对!难道你访问那个servlet还需要代理服务器吗?算了,如果读不到就算了,其实那个openConnection 已经代表连上了,
    如果连不上,则在那里就报 IOException 了!如果只是判断是否存在,把后面的读取代码删掉吧!呵呵呵!!!try{
      URL url = new URL("http://192.168.11.2/servlet/TestServlet"); // 地址 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
      return true;
    }catch(Exception ex){
      return false;
    }
      

  8.   

    如果保证可用,最好那面返回一个字符串,比如
    OK
    作为双方的约定。OVER 我想我们解决了!!