【问题标题】:how to send POST without waiting response C#如何在不等待响应的情况下发送 POST C#
【发布时间】:2012-04-18 09:29:19
【问题描述】:

如何在 C# 中发送 POST 而不等待响应? 我该怎么做?

请帮忙!

【问题讨论】:

  • 你能解释一下你的问题吗?!
  • 是的,我的问题是 url 泛滥

标签: c# post response helper


【解决方案1】:

使用WebClient 类中的一种异步方法,例如UploadStringAsync

当帖子完成(或失败)时将触发相应的事件(例如UploadStringCompleted),但您不必为该事件连接任何处理程序。但是,您可能希望这样做以检查是否有任何错误。

【讨论】:

    【解决方案2】:

    HTTP 会话只是标准的 TCP 会话,而 POST 只是符合 HTTP 规范的格式正确的数据。您可以打开与 Web 服务器的 TCP 连接并发送 POST 请求,然后关闭 TCP 连接。您可以查看 HTTP 规范 (RFC 2616) 以了解如何正确格式化 POST。您可以在以下位置找到它:http://www.w3.org/Protocols/rfc2616/rfc2616.html

    一个非常基本的 POST 将通过 TCP 连接发送以下内容:

    POST / HTTP/1.1
    Host: www.thehost.com
    Content-Length: 3
    Content-Type: application/x-www-form-urlencoded
    
    Hi!
    

    用您想要发送的任何内容替换内容和相应的长度,将 / 更改为正确的路径并将主机的主机名或 IP 放在 Host:... 并将 TCP 会话连接到该主机当然.

    一个非常非常基本的例子:

    using System.Net;
    using System.Net.Sockets;
    
    
    static void Main(string[] args)
    {
        string Hostname = "www.website.com";
        TcpClient Client = new TcpClient(Hostname, 80);
        Client.Client.Send(new ASCIIEncoding().GetBytes("POST / HTTP/1.1\nHost: "+Hostname+"\nConnection: close\n\n"));
        Client.Close();
    }
    

    将 www.website.com 更改为正确的主机名(以及端口,如果需要)。

    【讨论】:

    • 添加了一些代码示例,用于通过原始 TCP 套接字发送基本帖子。
    【解决方案3】:

    UploadValuesAsync 看起来像一个更完整的解决方案,使用如下内容:

    using (var client = new WebClient())
    {
        var values = new NameValueCollection();
        // add values...
        client.UploadValuesAsync(new System.Uri(rawUrl), "POST", values);
    }
    

    但请注意,我没有测试此代码,因为我试图解决一个稍微不同的问题。

    【讨论】:

    • 如果这是错误的,我不介意投反对票,但评论将是有用的指导。
    • 这实际上是我可能会结束使用的方法(现在正在搜索东西),但问题是:它仍在等待响应,只是在另一个线程上。 TCP 套接字连接似乎更好,但实现起来很复杂
    • 好吧,我想我最终会使用这个blogs.msdn.microsoft.com/webdev/2015/09/15/…
    【解决方案4】:
    var wc = new WebClient(); wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; wc.UploadStringAsync(uri, data); wc.UploadStringCompleted += (sender, e) => { // 完全的 };

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2013-12-29
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多