Ejemplo n.º 1
0
		// This method returns:
		// 1. NULL if incoming datastream doesn't contain at least 4 bytes
		// 2. Empty String is HTTP method is unknown
		// 3. HTTP method name
		private static String ReadHttpMethodName(Connection connection)
		{
			Byte[] lBuffer = new Byte[4];

			if (connection.Receive(lBuffer, 0, 4) < 4)
				return null;

			String lHttpMethodName = Encoding.ASCII.GetString(lBuffer, 0, 4);

			if ((lHttpMethodName == "POST") || (lHttpMethodName == "GET ") || (lHttpMethodName == "HTTP") ||
					(lHttpMethodName == "HEAD") || (lHttpMethodName == "PUT "))
				return lHttpMethodName;

			if (lHttpMethodName == "MERG")
			{
				connection.Read(lBuffer, 0, 1);
				if (lBuffer[0] != (Byte)'E')
					return String.Empty;

				return "MERGE";
			}

			if (lHttpMethodName == "DELE")
			{
				connection.Read(lBuffer, 0, 2);
				if (lBuffer[0] != (Byte)'T' || lBuffer[1] != (Byte)'E')
					return String.Empty;

				return "DELETE";
			}

			if (lHttpMethodName == "OPTI")
			{
				connection.Read(lBuffer, 0, 3);
				if (lBuffer[0] != (Byte)'O' || lBuffer[1] != (Byte)'N' || lBuffer[2] != (Byte)'S')
					return String.Empty;

				return "OPTIONS";
			}

			return String.Empty;
		}