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()));
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()));
如果不正常,则代码有问题,先修改代码第二,在IE里面打开那个连接看看,如果不能用,则去调试那面的程序或者网络配置吧第二,连接你的servlet, 如果出现问题,则只能说明那个servlet不能用,或者把代码修改为
InputStream is = con.getInputStream();
is.read(); // 只需要读取一个byte,就能证明那面是可以连接的,否则抛出异常,servlet不能用
URL url = URL(URLEncoder("http://192.168.61.170:8080/jp/AliveOrDeadServlet?lsIP=[3ffe:ffff:0:f100::100]&reportMsg=from alive to dead","GBK"));
但是连 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访问出错
URL url =new URL("http://192.168.61.170:8080/jp/AliveOrDeadServlet?lsIP=[3ffe:ffff:0:f100::100]&reportMsg=from%20dead%20to%20alive");
就可以了.准备结帖了,最后问一下,这种方法...是探测的最佳选择吗?不出异常就能保证那边服务可用吗?
你不是有返回值吗?在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;
}
OK
作为双方的约定。OVER 我想我们解决了!!