/// Post data到url        /// </summary>        /// <param name="data">要post的数据</param>        /// <param name="url">目标url</param>        /// <returns>服务器响应</returns>        static string PostDataToUrl(string data, string url)        {            Encoding encoding = Encoding.GetEncoding(sRequestEncoding);            byte[] bytesToPost = encoding.GetBytes(data);
     
            return PostDataToUrl(bytesToPost, url);        }         /// <summary>        /// Post data到url        /// </summary>        /// <param name="data">要post的数据</param>        /// <param name="url">目标url</param>        /// <returns>服务器响应</returns>        static string PostDataToUrl(byte[] data, string url)        {            #region 创建httpWebRequest对象            WebRequest webRequest = WebRequest.Create(url);            HttpWebRequest httpRequest = webRequest as HttpWebRequest;            if (httpRequest == null)            {                throw new ApplicationException(                    string.Format("Invalid url string: {0}", url)                    );            }            #endregion             #region 填充httpWebRequest的基本信息            httpRequest.UserAgent = sUserAgent;            httpRequest.ContentType = sContentType;            httpRequest.Method = "POST";            #endregion             #region 填充要post的内容            httpRequest.ContentLength = data.Length;            Stream requestStream = httpRequest.GetRequestStream();            requestStream.Write(data, 0, data.Length);            requestStream.Close();            #endregion             #region 发送post请求到服务器并读取服务器返回信息            Stream responseStream;            try            {                responseStream = httpRequest.GetResponse().GetResponseStream();            }            catch(Exception e)            {                // log error                Console.WriteLine(                    string.Format("POST操作发生异常:{0}", e.Message)                    );                throw e;            }            #endregion             #region 读取服务器返回信息            string stringResponse = string.Empty;            using(StreamReader responseReader =                new StreamReader(responseStream, Encoding.GetEncoding(sResponseEncoding)))            {                stringResponse = responseReader.ReadToEnd();            }            responseStream.Close();            #endregion            return stringResponse;        } Response.Write(PostDataToUrl("test", "http://localhost:2794/test.aspx"));
有几个地方不是很不明白byte[] bytesToPost = encoding.GetBytes(data);  到底是如何用处的呢 byte[] 还不知道怎么用法Response.Write(PostDataToUrl("test", "http://localhost:2794/test.aspx")); 这个输出的test.aspx内容。 怎么按一定的数据输出呢?比如 循环读取。 HttpWebRequest 调用 还不是了解。 搜索了很多 ,看都比较模糊。哪个高手讲解下呢? 谢谢。

解决方案 »

  1.   

    requestStream.Write(data, 0, data.Length);
     这个 如何接受POST过来的 数据呢
      

  2.   

    if (Request.Params["Id"] != null)
                {
                    int Id = Convert.ToInt32(Request.Params["Id"]);
    }
    就可以接收参数了。你不需要深入了解HttpRequestWeb
      

  3.   

    static void Main(string[] args)
            {
                MemoryStream stream = new MemoryStream();
                WebRequest request = HttpWebRequest.Create("http://www.cnblogs.com");
                request.Method = "POST";
                Stream requestStream = request.GetRequestStream();
                byte[] buffer = new byte[10];
                requestStream.Write(buffer, 0, 10);
                requestStream.Close();
                request.BeginGetResponse(HandleAsyncCallback, request);            Console.WriteLine("(Main) Is pool thread: {0}, Hash: {1}",
                    Thread.CurrentThread.IsThreadPoolThread,
                    Thread.CurrentThread.GetHashCode());            Console.ReadLine();
            }        static void HandleAsyncCallback(IAsyncResult ar)
            {
                WebRequest request = (WebRequest)ar.AsyncState;
                WebResponse response = request.EndGetResponse(ar);            Console.WriteLine("(HandleAsyncCallback) Is pool thread: {0}, Hash: {1}",
                    Thread.CurrentThread.IsThreadPoolThread,
                    Thread.CurrentThread.GetHashCode());
            }
      

  4.   


    //利用httpRequest对象获取远程URL服务端的响应流并赋给requestStream
    Stream requestStream = httpRequest.GetRequestStream();
    //将获取的响应流写入到data这个字节数组里
    requestStream.Write(data, 0, data.Length);