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

狮脑山的风

狮脑山的风

2016-02-19 13:24

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

  作者: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 );
  }
  
  }
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Acme包中的以Post方式发送数据的例子

ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码

Web开发
ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何于DataGridView控件中以跨数据行方式显示数据

电脑网络
如何于DataGridView控件中以跨数据行方式显示数据

消息持续发送的完整例子

PHP
消息持续发送的完整例子

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ASPX接收WINDOWS应用程序以POST方式发来的信息并存成文件

Web开发
ASPX接收WINDOWS应用程序以POST方式发来的信息并存成文件

SMTP协议-PHP的邮件发送程序例子

Web开发
SMTP协议-PHP的邮件发送程序例子

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

成功平面广告的“3I”标准

成功平面广告的“3I”标准

不提倡将Word中的内容直接拷到网站的编辑器中

不提倡将Word中的内容直接拷到网站的编辑器中
下拉加载更多内容 ↓