C#模擬客戶端發送數據示例

 

在給一些客戶端作服務器端支持時,發現他們提交上來的數據大都不是http請求格式,於是使用Request.Form獲取不到內容,今天用C#作下模擬,並演示下數據接收。

1.發送文本

1).客戶端發送文本

using System;
using System.IO;
using System.Net;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Post("http://localhost/Test", "木子屋", Encoding.UTF8));
            Console.ReadKey();
        }

        /// <summary>
        /// 發送文本
        /// </summary>
        /// <param name="url"></param>
        /// <param name="data"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static string Post(string url, string data, Encoding encoding)
        {
            byte[] bytes = encoding.GetBytes(data);
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "POST";
            request.ContentLength = bytes.Length;
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(bytes, 0, bytes.Length);
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (StreamReader stream = new StreamReader(response.GetResponseStream(), encoding))
            {
                return stream.ReadToEnd();
            }
        }
    }
}

2).服務器端接收文本

string str = "";
using (StreamReader stream = new StreamReader(Request.InputStream))
{
    str = stream.ReadToEnd();
}

說明:只需增長request.ContentType = "application/x-www-form-urlencoded",並將文本格式改成"data=木子屋",服務器端便可用Request.Form["data"]接收。

2.上傳文件

1).客戶端上傳文件

using System;
using System.IO;
using System.Net;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(UploadFile("http://localhost/Test", @"E:\test.jpg"));
            Console.ReadKey();
        }

        /// <summary>
        /// 上傳文件
        /// </summary>
        /// <param name="url"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        public static string UploadFile(string url, string file)
        {
            //1.HttpWebRequest
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "POST";
            using (Stream stream = request.GetRequestStream())
            {
                using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read))
                {
                    byte[] buffer = new byte[4096];
                    int bytesRead = 0;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        stream.Write(buffer, 0, bytesRead);
                    }
                }
            }
            //2.HttpWebResponse
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                return stream.ReadToEnd();
            }
        }
    }
}

2).服務器端接收文件

using (FileStream file = System.IO.File.Create(Request.MapPath("test.jpg"))) {     using (BinaryReader stream = new BinaryReader(Request.InputStream))     {         byte[] buffer = new byte[4096];         int bytesRead = 0;         while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)         {             file.Write(buffer, 0, bytesRead);         }     } }
相關文章
相關標籤/搜索