<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      一個用來訪問http服務器的東西。技巧類似于java.net中的那個。但要強。

      [摘要]package net.sonyhome.net;import java.io.*;import java.net.*;import java.util.*;import java.text.*;/** * 一個用來訪問http服務器的東西。功能類似于java.net中的那個。但要強,這個對Pos...
      package net.sonyhome.net;

      import java.io.*;
      import java.net.*;
      import java.util.*;
      import java.text.*;
      /**
      * 一個用來訪問http服務器的東西。功能類似于java.net中的那個。但要強,這個對Post方法的支持更好。
      * 其實也不能說是我寫的。不記得從哪兒找來的程序,稍事修改了一下。所以現在程序的結構都忘啦。
      * 不過有一點是肯定的,那就是可以用。呵呵。
      * 去年我做的Java版的精華區就是用這個類來訪問的。
      * Creation date: (2001-8-24 23:57:14)
      * @author: SonyMusic
      */
      public class HttpConnection {
      private URL url = null;
      //private boolean doInput = true;
      //private boolean doOutput = true;

      private boolean usePost = false;

      private boolean useCaches = false;

      private Vector reqHeaderNames = new Vector();
      private Vector reqHeaderValues = new Vector();
      private Vector resHeaderNames = null;
      private Vector resHeaderValues = null;
      private Socket socket = null;
      private OutputStream out = null;
      private InputStream in = null;
      private boolean useHttp11 = false;

      private boolean connected = false;

      private boolean inputStarted = false;

      Hashtable postData = new Hashtable();
      Hashtable getData = new Hashtable();

      /**
       * HttpConnection constructor comment.
       */
      public HttpConnection(URL url) {
      super();
      this.url = url;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:16:52)
       * @param name java.lang.String
       * @param value java.lang.String
       */
      public void addGet(String name, String value) {
      getData.put(name, value);
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:16:52)
       * @param name java.lang.String
       * @param value java.lang.String
       */
      public void addPost(String name, String value) {
      postData.put(name, value);
      }
      public void close() throws IOException {
      if (!connected)
      return;
      out.close();
      if (inputStarted)
      in.close();
      socket.close();
      }
      public void connect() throws IOException {
      if (connected)
      return;
      if (!useCaches) {
      setRequestProperty("Pragma", "no-cache");
      //setRequestProperty("Cache-Control", "no-cache, must-revalidate");
      //setRequestProperty("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
      }
      String protocol = url.getProtocol();
      if (!protocol.equals("http"))
      throw new UnknownServiceException("unknown protocol");
      String host = url.getHost();
      int port = url.getPort();
      if (port == -1)
      port = 80;
      String file = url.getFile();

      socket = new Socket(host, port);
      out = socket.getOutputStream();
      PrintStream pout = new PrintStream(out);

      String method;
      if (usePost) {
      method = "POST";
      setRequestProperty("Content-type", "application/x-www-form-urlencoded");
      int len = getPostDataLength();
      setRequestProperty("Content-length", String.valueOf(getPostDataLength()));

      }
      else
      method = "GET";
      if (getGetDataLength() > 0) {
      file += "?" + getGetDataString();
      }
      pout.println(method + " " + file + " HTTP/1.0");

      for (int i = 0; i < reqHeaderNames.size(); ++i) {
      String name = (String) reqHeaderNames.elementAt(i);
      String value = (String) reqHeaderValues.elementAt(i);
      pout.println(name + ": " + value);
      }
      pout.println("");
      if (usePost) {
      String ttt = getPostDataString();
      pout.println(getPostDataString());
      }

      pout.flush();

      connected = true;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 2:06:07)
       * @return boolean
       * @exception java.lang.IllegalStateException The exception description.
       */
      public boolean contentIsText() throws IOException {
      String type = getContentType();
      if (type.startsWith("text"))
      return true;
      return false;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 2:20:31)
       * @return byte[]
       */
      public byte[] getByteArray() throws IOException {
      DataInputStream din = new DataInputStream(getInputStream());

      byte[] ret;
      byte[] b = new byte[1024];
      int off = 0, len = 0;

      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      while ((len = din.read(b, off, 1024)) > 0) {
      bos.write(b, 0, len);
      if (len < 1024)
      break;
      }
      bos.flush();
      bos.close();
      return bos.toByteArray();
      }
      // Gets the content length.Returns -1 if not known.
      public int getContentLength() throws IOException {
      return getHeaderFieldInt("content-length", -1);
      }
      /// Gets the content type.Returns null if not known.
      public String getContentType() throws IOException {
      return getHeaderField("content-type");
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:18:23)
       * @return java.lang.String
       */
      public int getGetDataLength() {
      return getGetDataString().length();
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:18:23)
       * @return java.lang.String
       */
      public String getGetDataString() {
      StringBuffer buf = new StringBuffer();
      Enumeration enu = getData.keys();
      while (enu.hasMoreElements()) {
      String key = (String) (enu.nextElement());
      String value = (String) (getData.get(key));
      if (buf.length() > 0)
      buf.append("&");
      buf.append(key);
      buf.append("=");
      buf.append(URLEncoder.encode(value));
      }
      return buf.toString();
      }
      public String getHeaderField(String name) throws IOException {
      if (resHeaderNames == null)
      startInput();
      int i = resHeaderNames.indexOf(name.toLowerCase());
      if (i == -1)
      return null;
      return (String) resHeaderValues.elementAt(i);
      }
      public long getHeaderFieldDate(String name, long def) throws IOException {
      try {
      return DateFormat.getDateInstance().parse(getHeaderField(name)).getTime();
      }
      catch (ParseException e) {
      throw new IOException(e.toString());
      }
      }
      public int getHeaderFieldInt(String name, int def) throws IOException {
      try {
      return Integer.parseInt(getHeaderField(name));
      }
      catch (NumberFormatException t) {
      return def;
      }
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:12:09)
       * @return java.util.Enumeration
       */
      public Enumeration getHeaderNames() {
      return resHeaderNames.elements();
      }
      public InputStream getInputStream() throws IOException {
      startInput();
      return in;
      }
      public OutputStream getOutputStream() throws IOException {
      connect();
      return out;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:18:23)
       * @return java.lang.String
       */
      public int getPostDataLength() {
      return getPostDataString().length();
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:18:23)
       * @return java.lang.String
       */
      public String getPostDataString() {
      StringBuffer buf = new StringBuffer();
      Enumeration enu = postData.keys();
      while (enu.hasMoreElements()) {
      String key = (String) (enu.nextElement());
      String value = (String) (postData.get(key));
      if (buf.length() > 0)
      buf.append("&");
      buf.append(key);
      buf.append("=");
      buf.append(URLEncoder.encode(value));
      }
      return buf.toString();
      }
      public String getRequestProperty(String name) {
      if (connected)
      throw new IllegalAccessError("already connected");
      int i = reqHeaderNames.indexOf(name);
      if (i == -1)
      return null;
      return (String) reqHeaderValues.elementAt(i);
      }
      public URL getURL() {
      return url;
      }
      public boolean getUseCaches() {
      return useCaches;
      }
      public boolean getUseHttp11() {
      return useHttp11;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:48:15)
       * @return boolean
       */
      public boolean isUsePost() {
      return usePost;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 0:15:53)
       * @param args java.lang.String[]
       */
      public static void main(String[] args) {
      try {
      /*
      URL url=new URL("http","192.168.0.3","/Post.php");
      HttpConnection con=new HttpConnection(url);
      con.setUsePost(true);
      con.setUseCaches(false);
      //con.setRequestProperty("Connection", "Keep-Alive");

      con.addGet("TextField","你好");
      con.addGet("Submit", "submit");

      con.connect();
      //ByteArrayOutputStream bos=con.getByteArray();
      byte[] ret=con.getByteArray();
      System.out.println(new String(ret));

      System.out.println("");
      Enumeration enu=con.getHeaderNames();
      while (enu.hasMoreElements()) {
      String headerName=(String)(enu.nextElement());
      System.out.println(headerName+": "+con.getHeaderField(headerName));
      }
      con.close();
      */

      URL url = new URL("http", "192.168.0.3", "/codemaker/IMAGES/BO.GIF");
      HttpConnection con = new HttpConnection(url);
      con.connect();

      FileOutputStream fos = new FileOutputStream("d:\\bo.gif");
      fos.write(con.getByteArray());
      fos.flush();
      fos.close();

      System.out.println("");
      Enumeration enu = con.getHeaderNames();
      while (enu.hasMoreElements()) {
      String headerName = (String) (enu.nextElement());
      System.out.println(headerName + ": " + con.getHeaderField(headerName));
      }
      con.close();

      }
      catch (Exception e) {
      e.printStackTrace();
      }
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:16:52)
       * @param name java.lang.String
       * @param value java.lang.String
       */
      public void removeGet(String name) {
      getData.remove(name);
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:16:52)
       * @param name java.lang.String
       * @param value java.lang.String
       */
      public void removePost(String name) {
      postData.remove(name);
      }
      public void setRequestProperty(String name, String value) {
      if (connected)
      throw new IllegalAccessError("already connected");
      reqHeaderNames.addElement(name);
      reqHeaderValues.addElement(value);
      }
      public void setUseCaches(boolean useCaches) {
      if (connected)
      throw new IllegalAccessError("already connected");
      this.useCaches = useCaches;
      }
      public void setUseHttp11(boolean useHttp11) {
      if (connected)
      throw new IllegalAccessError("already connected");
      this.useHttp11 = useHttp11;
      }
      /**
       * Insert the method's description here.
       * Creation date: (2001-8-25 1:48:15)
       * @param newUsePost boolean
       */
      public void setUsePost(boolean newUsePost) {
      if (connected)
      throw new IllegalAccessError("already connected");
      usePost = newUsePost;
      }
      private void startInput() throws IOException {
      connect();
      if (inputStarted)
      return;
      in = socket.getInputStream();
      resHeaderNames = new Vector();
      resHeaderValues = new Vector();
      DataInputStream din = new DataInputStream(in);
      String line;

      // Read and ignore the status line.
      line = din.readLine();
      // Read and save the header lines.
      while (true) {
      line = din.readLine();
      if (line == null line.length() == 0)
      break;
      int colonBlank = line.indexOf(": ");
      if (colonBlank != -1) {
      String name = line.substring(0, colonBlank);
      String value = line.substring(colonBlank + 2);
      resHeaderNames.addElement(name.toLowerCase());
      resHeaderValues.addElement(value);
      }
      }

      inputStarted = true;
      }
      /**
       * Returns a String that represents the value of this object.
       * @return a string representation of the receiver
       */
      public String toString() {
      // Insert code to print the receiver here.
      // This implementation forwards the message to super. You may replace or supplement this.
      return this.getClass().getName() + ":" + url;
      }
      }


      日韩精品一区二区三区高清