Acme包中的以Post方式发送数据的例子

2016-02-19 13:24 10 1 收藏

今天图老师小编给大家介绍下Acme包中的以Post方式发送数据的例子,平时喜欢Acme包中的以Post方式发送数据的例子的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - 编程语言 】


  作者:sonymusic
  email: sonymusic@china.com
  日期:2001-5-11 13:55:13
  package Acme;
  
  import Java.net.*;
  import java.io.*;
  import java.util.*;
  import java.text.*;
  
  /// A URLConnection that implements POST.
  // P
  // Some implementations of URLConnection, e.g. the one in Navigator 3.0,
  // do not support POST. This is a stripped-down version that does.
  // P
  // Note that it can´t inherit from java.net.URLConnection because that
  // class has no public constrUCtors. Not all the standard URLConnection
  // methods are re-implemented here, just the ones necessary for posting.
  // P
  // This class is not needed in current browsers.
  // P
  // A HREF="/resources/classes/Acme/PostURLConnection.java"Fetch the software./ABR
  // A HREF="/resources/classes/Acme.tar.gz"Fetch the entire Acme package./A
  
  public class PostURLConnection
  {
  
  private URL url;
  private boolean doInput = false;
  private boolean doOutput = true;
  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;
  private OutputStream out;
  private InputStream in;
  
  
  /// Constructs a POST URL connection to the specified URL.
  // @param url the specified URL
  public PostURLConnection( URL url )
  {
  this.url = url;
  }
  
  
  private boolean connected = false;
  
  public void connect() throws IOException
  {
  if ( connected )
  return;
  if ( ! useCaches )
  setRequestProperty( "Pragma", "no-cache" );
  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 ( doOutput )
  method = "POST";
  else
  method = "GET";
  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( "" );
  pout.flush();
  connected = true;
  }
  
  
  private boolean inputStarted = false;
  
  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;
  }
  
  
  public void close() throws IOException
  {
  if ( ! connected )
  return;
  out.close();
  if ( inputStarted )
  in.close();
  socket.close();
  }
  
  
  /// Gets the URL for this connection.
  public URL getURL()
  {
  return url;
  }
  
  // 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" );
  }
  
  /// Gets a header field by name. Returns null if not known.
  // @param name the name of the header field
  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 );
  }
  
  /// Gets a header field by name. Returns null if not known.
  // The field is parsed as an integer.
  // @param name the name of the header field
  // @param def the value to return if the field is missing or malformed.
  public int getHeaderFieldInt( String name, int def ) throws IOException
  {
  try
  {
  return Integer.parseInt( getHeaderField( name ) );
  }
  catch ( NumberFormatException t )
  {
  return def;
  }
  }
  
  
  /// Gets a header field by name. Returns null if not known.
  // The field is parsed as a date.
  // @param name the name of the header field
  // @param def the value to return if the field is missing or malformed.
  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() );
  }
  }
  
  /// Call this routine to get an InputStream that reads from the object.
  // @exception UnknownServiceException If the protocol does not support input.
  public InputStream getInputStream() throws IOException
  {
  if ( ! doInput )
  throw new UnknownServiceException(
  "connection doesn´t support input" );
  startInput();
  return in;
  }
  
  /// Call this routine to get an OutputStream that writes to the object.
  // @exception UnknownServiceException If the protocol does not support output.
  public OutputStream getOutputStream() throws IOException
  {
  if ( ! doOutput )
  throw new UnknownServiceException(
  "connection doesn´t support output" );
  connect();
  return out;
  }
  
  
  /// Returns the String representation of the URL connection.
  public String toString()
  {
  return this.getClass().getName() + ":" + url;
  }
  
  
  /// A URL connection can be used for input and/or output. Set the DoInput
  // flag to true if you intend to use the URL connection for input,
  // false if not. The default for PostURLConnections is false.
  public void setDoInput( boolean doInput )
  {
  if ( connected )
  throw new IllegalAccessError( "already connected" );
  this.doInput = doInput;
  }
  
  public boolean getDoInput()
  {
  return doInput;
  }
  
  
  /// A URL connection can be used for input and/or output. Set the DoOutput
  // flag to true if you intend to use the URL connection for output,
  // false if not. The default for PostURLConnections is true.
  public void setDoOutput( boolean doOutput )
  {
  if ( connected )
  throw new IllegalAccessError( "already connected" );
  this.doOutput = doOutput;
  }
  
  public boolean getDoOutput()
  {
  return doOutput;
  }
  
  
  /// Some protocols do caching of documents. Occasionally, it is important
  // to be able to "tunnel through" and ignore the caches (e.g. the "reload"
  // button in a browser). If the UseCaches flag on a connection is true,
  // the connection is allowed to use whatever caches it can. If false,
  // caches are to be ignored. The default for PostURLConnections is false.
  public void setUseCaches( boolean useCaches )
  {
  if ( connected )
  throw new IllegalAccessError( "already connected" );
  this.useCaches = useCaches;
  }
  
  public boolean getUseCaches()
  {
  return useCaches;
  }
  
  
  // Sets/gets a general request property.
  // @param name The keyWord by which the request is known (eg "accept")
  // @param value The value associated with it.
  public void setRequestProperty( String name, String value )
  {
  if ( connected )
  throw new IllegalAccessError("already connected");
  reqHeaderNames.addElement( name );
  reqHeaderValues.addElement( value );
  }
  
  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 );
  }
  
  }

来源:http://www.tulaoshi.com/n/20160219/1604150.html

延伸阅读
标签: ASP
  aierong [原作] 第一次做BToC站点的购物车,总结了一下购物车中数据的存放方式 方式1:用会话 会话中可以存放任何类型数据,每个用户有一个唯一的会话ID,用此ID区分不同用户的购物车 会话数据是存放在WEB服务器的内存中的,如果使用购物车的用户比较多的话,这样一来将占用大量服务器资源 会话有一小缺陷,它是依靠COOKIE来与用户通...
标签: Web开发
CSS2.1中使用一个4位的数字来表示权重,以下是有关权重的一些规定: 类型选择符的权重为:0001 类选择符的权重为:0010 通用选择符的权重为:0000 子选择符的权重为:0000 属性选择符的权重为:0010 伪类选择符的权重为:0010 伪元素选择符的权重为:0010 包含选择符的权重为:包含的选择符权重值之和内联样式的权重为:1000 ...
标签: Java JAVA基础
  <html <head <titleJavaMail Form</title </head <body <form action="/purejsp/MailExample.jsp" method="post" <table cellspacing="2" cellpadding="2" border="1" <tr <tdTo:</td <td <input type="text" name="to"...
标签: Java JAVA基础
  MailExample.jsp <html <head <titleJSP JavaMail Example </title </head <body <%@ page import="java.util.*" % <%@ page import="javax.mail.*" % <%@ page import="javax.mail.internet.*" % <%@ page import="javax.activation.*" % <% String hos...
/* * 创建日期 2005-9-27 * * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql.*; /** * A JDBC test application for Oracle * @author Fane * @version 1.0.0 * @since JDK1.4 */ ...

经验教程

624

收藏

35
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部