C#模拟客户端发送数据示例
2023-09-14 08:58:56 时间
在给一些客户端做服务器端支持时,发现他们提交上来的数据大都不是http请求格式,因而使用Request.Form获取不到内容,今天用C#做下模拟,并演示下数据接收。
1.发送文本
1).客户端发送文本
2).服务器端接收文本
说明:只需增加request.ContentType = "application/x-www-form-urlencoded",并将文本格式改为"data=木子屋",服务器端即可用Request.Form["data"]接收。
2.上传文件
1).客户端上传文件
2).服务器端接收文件
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();
}
}
}
}
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();
}
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();
}
}
}
}
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);
}
}
}
{
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);
}
}
}
相关文章
- 算法 – 堆排序(C#)
- C#使用WinExec调用exe程序[通俗易懂]
- C#中using语句是什么意思「建议收藏」
- c#实现ping详解编程语言
- C# 实现QQ群成员列表导出及邮件群发之模拟QQ登陆
- c#调用.bat文件的实现代码
- c#在WebBrowser中用SendMessage模拟鼠标点击
- C#后台调用前台javascript的五种方法小结
- C#中关于zip压缩解压帮助类的封装附源码下载
- C#可以减少或不使用switch有什么方法
- C#中验证sql语句是否正确(不执行语句)
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- C#的内存回收代码
- C#中把字符串String转换为整型Int的小例子
- C#控件闪烁的解决方法
- C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法
- C#采用Winform实现类似Android的Listener