C# 将数据从文本文件(由桌面客户端读取)发布到基于ASP.NET的服务器
我正在开发一个客户机-服务器应用程序-服务器是一个ASP.NETWeb应用程序 客户端(桌面应用程序)需要将文本文件中包含的数据发送到我的asp.net web应用程序。 数据大约为100KB,采用多行文本形式C# 将数据从文本文件(由桌面客户端读取)发布到基于ASP.NET的服务器,c#,.net,post,upload,C#,.net,Post,Upload,我正在开发一个客户机-服务器应用程序-服务器是一个ASP.NETWeb应用程序 客户端(桌面应用程序)需要将文本文件中包含的数据发送到我的asp.net web应用程序。 数据大约为100KB,采用多行文本形式 考虑到我需要每10分钟左右发布一次数据,将这些数据发布到服务器的最佳方法是什么;你说你想要它作为一个POST参数,但是你从一个标题读到它。。。?这将是典型post字段的表单,或者只是原始数据的请求主体 对于发送表单字段: NameValueCollection fields =
考虑到我需要每10分钟左右发布一次数据,将这些数据发布到服务器的最佳方法是什么;你说你想要它作为一个POST参数,但是你从一个标题读到它。。。?这将是典型post字段的表单,或者只是原始数据的请求主体 对于发送表单字段:
NameValueCollection fields = new NameValueCollection();
fields.Add("name1","some text");
fields.Add("name2","some more text");
using (var client = new WebClient())
{
byte[] resp = client.UploadValues(address, fields);
// use Encoding to get resp as a string if needed
}
要发送原始文件(不是表单;只是文本本身),请使用
UploadFile
;对于标题,请使用.headers.Add
如果您的webmethod使用HttpContext.Current.Request.headers[“errorLog”]
,则您的客户端应用程序在执行请求时需要发送此自定义http标题。请注意,http头不是用来发送大数据的
在客户端应用程序中,您可以向服务添加Web引用,并使用生成的代理类覆盖并添加自定义http标头:
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
var req = (HttpWebRequest)base.GetWebRequest(uri);
var value File.ReadAllText("path_to_your_file");
req.Headers.Add("errorLog", value);
return (WebRequest)req;
}
如果文件足够小,您可以轻松地将其放入内存(如果您通过POST发送文件,您希望它是这样的),那么您可以简单地执行以下操作:
string textFileContents = System.IO.File.ReadAllText( @"C:\MyFolder\MyFile.txt" );
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( "http://www.myserver.com/myurl.aspx" );
request.Method = "POST";
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "fileContents=" + System.Web.HttpUtility.UrlEncode( textFileContents );
byte[] data = encoding.GetBytes( postData );
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write( data, 0, data.Length );
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// do something with the response if required
至于阅读文本服务器端,您只需使用Page.Request.Form[“fileContents”]