设某页面,mail.XXX.com页面当中,有一个Form表单,顾客填好信息以后,点击提交以后,如何获取到这个表单的信息?

解决方案 »

  1.   

    去看SOAP的POST方法   估计有点用
      

  2.   

    以前找的代码,贴给你看,可以研究一下.我用它做过类似的东西.
    ///   <summary>   
        ///   MyTryRaw   的摘要说明。   
        ///   </summary>   
        public class MyTryRaw
        {
            #region   Attributes
            private bool error_occurred;                                //套接字在接收包时是否产生错误
            private static int len_receive_buf;                         //得到的数据流的长度   
            private byte[] receive_buf_bytes = null;                    //收到的字节   
            private Socket socket = null;                               //声明套接字   
            private const int SIO_RCVALL = unchecked((int)0x98000001);  //监听所有的数据包   
            public static bool isStop = false;        public Socket m_socket
            {
                get
                {
                    return socket;
                }
            }        #endregion        #region Events
            public delegate void PacketArrivedEventHandler(Object sender, PacketArrivedEventArgs args);        public event PacketArrivedEventHandler PacketArrival;
            #endregion        #region   OnEvents
            protected virtual void OnPacketArrival(PacketArrivedEventArgs e)
            {
                if (PacketArrival != null)
                {
                    PacketArrival(this, e);
                }
            }        #endregion        #region   Constructor
            public MyTryRaw()
            {
                //   
                //   TODO:   在此处添加构造函数逻辑   
                //   
                len_receive_buf = 4096;
                receive_buf_bytes = new byte[len_receive_buf];
                //PacketArrival += new PacketArrivedEventHandler(MyTryRaw_PacketArrival);        }
            #endregion        #region   Functions        public void BindSocket()
            {
                //IPAddress ipAddress = IPAddress.Parse("192.168.10.233");
                //this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
                //Console.WriteLine("Start bind!");
                //try
                //{
                //    socket.Blocking = false;
                //    socket.Bind(new IPEndPoint(ipAddress, 80));
                //}
                //catch (Exception E)
                //{
                //    throw (E);
                //}
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
                socket.Blocking = false;                                          //置socket非阻塞状态
                socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.110"), 0)); //绑定套接字            if (SetSocketOption() == false) error_occurred = true;            Console.WriteLine("Bind success!");
            }        public bool SetSocketOption()
            {
                bool ret_value = true;
                try
                {                
                    //低级别操作模式,接受所有的数据包,这一步是关键,必须把socket设成raw和IP Level才可用SIO_RCVALL
                    socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
                    byte[] IN = new byte[4] { 1, 0, 0, 0 };
                    byte[] OUT = new byte[4];                int ret_code = socket.IOControl(SIO_RCVALL, IN, OUT);
                    ret_code = OUT[0] + OUT[1] + OUT[2] + OUT[3];//把4个8位字节合成一个32位整数
                    if (ret_code != 0) ret_value = false;
                }
                catch (SocketException)
                {
                    ret_value = false;
                }
                return ret_value;
            }        public void ShutDown()
            {
                Console.WriteLine("Start   ShutDown");
                if (socket != null)
                {
                    socket.Shutdown(SocketShutdown.Both);
                    socket.Close();
                }
                socket = null;
                Console.WriteLine("ShutDown   Success");
            }        public void Receive(byte[] receivedBytes, int receivedLength)
            {
                PacketArrivedEventArgs e = new PacketArrivedEventArgs();            int IPVersion = Convert.ToInt16((receivedBytes[0] & 0xF0) >> 4);
                e.IPVersion = IPVersion.ToString();            e.HeaderLength = Convert.ToUInt32((receivedBytes[0] & 0x0F) << 2);            if (receivedBytes.Length >= 20)
                {
                    switch (Convert.ToInt16(receivedBytes[9]))
                    {
                        case 1:
                            e.Protocol = "ICMP";
                            break;
                        case 2:
                            e.Protocol = "IGMP";
                            break;
                        case 6:
                            e.Protocol = "TCP";
                            break;
                        case 17:
                            e.Protocol = "UDP";
                            break;
                        default:
                            e.Protocol = "Unknow";
                            break;
                    }                e.OriginationAddress = Convert.ToInt16(receivedBytes[12]).ToString() + "." + Convert.ToInt16(receivedBytes[13]).ToString() + "." + Convert.ToInt16(receivedBytes[14]).ToString() + "." + Convert.ToInt16(receivedBytes[15]).ToString();
      

  3.   

    e.DestinationAddress = Convert.ToInt16(receivedBytes[16]).ToString() + "." + Convert.ToInt16(receivedBytes[17]).ToString() + "." + Convert.ToInt16(receivedBytes[18]).ToString() + "." + Convert.ToInt16(receivedBytes[19]).ToString();                int Oport = ((receivedBytes[20] << 8) + receivedBytes[21]);
                    e.OriginationPort = Oport.ToString();                int Dport = ((receivedBytes[22] << 8) + receivedBytes[23]);
                    e.DestinationPort = Dport.ToString();                e.PacketLength = (uint)receivedLength;                e.MessageLength = e.PacketLength - e.HeaderLength;                e.ReceiveBuffer = new byte[e.PacketLength];
                    e.IPHeaderBuffer = new byte[e.HeaderLength];
                    e.MessageBuffer = new byte[e.MessageLength];                Array.Copy(receivedBytes, 0, e.ReceiveBuffer, 0, (int)e.PacketLength);                Array.Copy(receivedBytes, 0, e.IPHeaderBuffer, 0, e.HeaderLength);                Array.Copy(receivedBytes, e.HeaderLength, e.MessageBuffer, 0, (int)e.MessageLength);
                }            OnPacketArrival(e);
                if (eee != null)
                {
                    eee(this, e);
                }        }        public void BeginReceive()
            {            if (socket != null)
                {
                    object state = null;
                    state = socket;
                    socket.BeginReceive(receive_buf_bytes, 0, len_receive_buf, SocketFlags.None,
                        new AsyncCallback(CallReceive), this);
                }
            }        private void CallReceive(IAsyncResult ar)//异步回调   
            {
                int received_bytes = 0;
                received_bytes = socket.EndReceive(ar);
                Receive(receive_buf_bytes, received_bytes);
                BeginReceive();
            }        public event newEventHandler eee;        private void MyTryRaw_PacketArrival(object sender, PacketArrivedEventArgs e)
            {            Console.WriteLine("Start   Show-------------");
                Console.WriteLine("HeaderLength:   " + e.HeaderLength);
                Console.WriteLine("IPHeader:   ");
                for (int i = 0; i < e.IPHeaderBuffer.Length; i++)
                {
                    int j = i % 16;
                    if (i >= 16 && j == 0)
                    {
                        Console.WriteLine("\r\n");
                    }                if (e.IPHeaderBuffer[i].ToString("X").Length != 1)
                    {
                        Console.Write("{0}   ", e.IPHeaderBuffer[i].ToString("X"));
                    }
                    else
                    {
                        Console.Write("0{0}   ", e.IPHeaderBuffer[i].ToString("X"));
                    }            }
                Console.WriteLine("\r\n");            Console.WriteLine("IPVersion:   " + e.IPVersion);
                Console.WriteLine("OriginAddress:   " + e.OriginationAddress);
                Console.WriteLine("OriginPort:   " + e.OriginationPort);
                Console.WriteLine("DestAddress:   " + e.DestinationAddress);
                Console.WriteLine("DestPort:   " + e.DestinationPort);
                Console.WriteLine("Protocol:   " + e.Protocol);            Console.WriteLine("PacketLength:   " + e.PacketLength);
                Console.WriteLine("Packet:   ");
                for (int i = 0; i < e.ReceiveBuffer.Length; i++)
                {
                    int j = i % 16;
                    if (i >= 16 && j == 0)
                    {
                        Console.WriteLine("\r\n");
                    }                if (e.ReceiveBuffer[i].ToString("X").Length != 1)
                    {
                        Console.Write("{0}   ", e.ReceiveBuffer[i].ToString("X"));
                    }
                    else
                    {
                        Console.Write("0{0}   ", e.ReceiveBuffer[i].ToString("X"));
                    }
                }
                Console.WriteLine("\r\n");            Console.WriteLine("MessageLength:   " + e.MessageLength);
                Console.WriteLine("Message:   ");
                for (int i = 0; i < e.MessageBuffer.Length; i++)
                {
                    int j = i % 16;
                    if (i >= 16 && j == 0)
                    {
                        Console.WriteLine("\r\n");
                    }
                    if (e.MessageBuffer[i].ToString("X").Length != 1)
                    {
                        Console.Write("{0}   ", e.MessageBuffer[i].ToString("X"));
                    }
                    else
                    {
                        Console.Write("0{0}   ", e.MessageBuffer[i].ToString("X"));
                    }
                }
                Console.WriteLine("\r\n");
                Console.WriteLine("----------------End   Show!");
                Console.WriteLine("----------------");
                Console.WriteLine("\r\n");
                Console.WriteLine("\r\n");
            }        #endregion
        }
      

  4.   

    哥们,谢谢了~ 待会马上散分~  
    不过,我还有一个问题,你声明的委托中使用了PacketArrivedEventArgs类,这个类,应该是自定义的吧?但是,我不知道如何写。可以回复给我吗?谢了
      

  5.   

    呵呵,忘记了    public delegate void newEventHandler(object sender, PacketArrivedEventArgs e);
        public class PacketArrivedEventArgs : System.EventArgs
        {
            public PacketArrivedEventArgs()
            {
            }
            public uint HeaderLength = 0;
            public string Protocol = String.Empty;
            public string IPVersion = String.Empty;
            public string OriginationAddress = String.Empty;
            public string OriginationPort = String.Empty;
            public string DestinationAddress = String.Empty;
            public string DestinationPort = String.Empty;
            public uint PacketLength = 0;
            public uint MessageLength = 0;
            public byte[] ReceiveBuffer = null;
            public byte[] IPHeaderBuffer = null;
            public byte[] MessageBuffer = null;
        }