C# 从.net桌面应用程序向网站发送字节

C# 从.net桌面应用程序向网站发送字节,c#,asp.net,sockets,web,byte,C#,Asp.net,Sockets,Web,Byte,是否有任何方法可以将数据(字符串、文件、、、)以字节的形式从桌面应用程序发送到网站您可以使用发送HTTP请求中的数据。一串;例如: string url = "http://website.com/MyController/MyAction"; string data = "Something"; string response; using WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; re

是否有任何方法可以将数据(字符串、文件、、、)以字节的形式从桌面应用程序发送到网站

您可以使用发送HTTP请求中的数据。一串;例如:

string url = "http://website.com/MyController/MyAction";
string data = "Something";
string response;
using WebClient client = new WebClient()) {
  client.Encoding = Encoding.UTF8;
  response = client.UploadString(url, data);
}
string url = "http://website.com/MyController/MyAction";
byte[] data = { 1, 2, 3 };
byte[] response;
using WebClient client = new WebClient()) {
  response = client.UploadData(url, data);
}
或字节数组;例如:

string url = "http://website.com/MyController/MyAction";
string data = "Something";
string response;
using WebClient client = new WebClient()) {
  client.Encoding = Encoding.UTF8;
  response = client.UploadString(url, data);
}
string url = "http://website.com/MyController/MyAction";
byte[] data = { 1, 2, 3 };
byte[] response;
using WebClient client = new WebClient()) {
  response = client.UploadData(url, data);
}
在web应用程序中(假设您使用的是MVC和C#),您将在获取数据的控制器中拥有一个action方法。例如:

public ActionResult MyAction() {
  byte[] data = Request.BinaryRead(Request.ContentLength);
  // do something with the data
  // create a byte array "response" with something to send back
  return Content(response, "text/plain");
}
字符串和字节数组在发送时都作为字节数组结束,因此您可以使用
Encoding.UTF8.GetString(data)
将数据转换为
UploadString
发送的字符串

要为
UploadString
返回字符串,可以使用
Encoding.GetBytes(str)
将字符串转换为字节


这些方法有几种重载,它们可以做类似的事情,可能更适合您的需要,但这应该可以让您开始。

是的。您是否计划为应用程序使用任何特定的编程语言?您将使用什么平台创建网站?是的,c#,,,对于网站,您所问问题的答案是“是的,有”。请参阅本页,了解如何提问,以获得更深入的答案。请同时阅读at上的文章,它只需要大约8分钟的阅读时间,它就如何在这个网站上提出一个好的问题,从而产生好的答案给出了很好的建议。你能举个例子吗?或者会用什么?还有其他方法吗?@Abdelhak:还有很多其他方法,但大多数都涉及更复杂的数据通信方式,或者发送包装在某种数据结构中的数据(例如,多部分/表单数据或XML)。有什么特别的功能你想与众不同吗?是的,我不想用最快的方式将我的桌面应用程序与我的网站连接起来并发送/接收数据,在两个桌面应用程序之间我一直在使用socket/tcpclient,但在桌面应用程序与网站之间我不知道最好的方式,,,,,,我对我的语言感到抱歉,它是bad@Abdelhak:以上代码给出了合理代码量的最小开销。你可以得到稍微少一点,但它会变得复杂得多。如果希望应用程序响应更快,即在等待响应时不会冻结,则可以使用
WebClient
类中方法的异步对应项。@Abdelhak:网站不是这样通信的。它使用HTTP消息形式的服务器客户端调用。您可以在站点中启动后台线程,并使用TCP连接与桌面应用程序通信,但这不是一个非常稳定的解决方案。web服务器定期回收站点,这将杀死后台线程。当没有传入请求时,web服务器也可以关闭站点以节省资源,具有相同的效果。网站根本不应该连续运行。