黑马程序员技术交流社区

标题: 关于URL.openStream() [打印本页]

作者: daividtu    时间: 2015-12-10 17:59
标题: 关于URL.openStream()
URLDemo
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;

  7. public class URLDemo {

  8.         public static void main(String[] args) throws IOException {
  9.                 String str_url = "http://127.0.0.1:9090/myweb/1.html?name=lisi";
  10.                 URL url = new URL(str_url);
  11.                 System.out.println("getProtocol:"+url.getProtocol());
  12.                 System.out.println("getHost:"+url.getHost());
  13.                 System.out.println("getPort:"+url.getPort());
  14.                 System.out.println("getFile:"+url.getFile());
  15.                 System.out.println("getPath:"+url.getPath());
  16.                 System.out.println("getQuery:"+url.getQuery());
  17.                 /*InputStream in = url.openStream();//相当于url.openConnection().getInjputStream();
  18.                 byte[] buf = new byte[1024];
  19.                 int len = in.read(buf);
  20.                 String text = new String(buf,0,len);
  21.                 System.out.println(text);
  22.                 in.close();*/
  23.                 BufferedReader bfrd = new BufferedReader(new InputStreamReader(url.openStream()));
  24.                 String line = null;
  25.                 while((line=bfrd.readLine())!=null)
  26.                 {
  27.                         System.out.println(line);
  28.                 }
  29.                 bfrd.close();
  30.         }
  31. }
复制代码


服务端代码
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStreamWriter;
  9. import java.io.PrintWriter;
  10. import java.net.ServerSocket;
  11. import java.net.Socket;

  12. public class MyTomcat {

  13.         public static void main(String[] args) throws IOException {
  14.                 ServerSocket ss = new ServerSocket(9090);
  15.                 Socket s = ss.accept();
  16.                 System.out.println(s.getInetAddress().getHostAddress()+"....connected");
  17.                 InputStream in = s.getInputStream();
  18.                 byte[] buf = new byte[1024];
  19.                 int len = in.read(buf);
  20.                 String text = new String(buf,0,len);
  21.                 System.out.println(text);
  22.                 //给客户端一个反馈信息。
  23.                 File directory = new File("");
  24.                 String urlstr = text.split("\r\n")[0].split(" ")[1];
  25.                 String urlstr2 =null;
  26.                 if(urlstr.contains("?"))
  27.                         urlstr2 = urlstr.substring(0, urlstr.lastIndexOf('?'));
  28.                 else
  29.                         urlstr2 = urlstr;
  30.                 String path =directory.getAbsolutePath()+urlstr2;
  31.                 BufferedReader bfrd = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path))));
  32.                 BufferedWriter bfwr = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  33.                 String line = null;
  34.                 while((line=bfrd.readLine())!=null)
  35.                 {
  36.                         bfwr.write(line);
  37.                         bfwr.newLine();
  38.                         bfwr.flush();
  39.                 }
  40.                 //PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  41.                 //out.println("<font color='red' size='7'>欢迎光临</font>");
  42.                 s.close();
  43.                 ss.close();
  44.         }
  45. }
复制代码

用浏览器访问正常
C:\Users\windows\Desktop\11 (2).png
urlDemo 访问 抛IO异常 ?? 不知怎么造成的
getProtocol:http
getHost:127.0.0.1
getPort:9090
getFile:/myweb/1.html?name=lisi
getPath:/myweb/1.html
getQuery:name=lisi
Exception in thread "main" java.io.IOException: Invalid Http response
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1555)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at java.net.URL.openStream(URL.java:1038)
        at URLDemo.main(URLDemo.java:21)
作者: daividtu    时间: 2015-12-10 18:01
注: 浏览器直接访问这个地址http://127.0.0.1:9090/myweb/1.html?name=lisi 是正常的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2