C# 如何在不等待回复的情况下发送帖子#

C# 如何在不等待回复的情况下发送帖子#,c#,post,response,helper,C#,Post,Response,Helper,如何在不等待回复的情况下发送帖子? 我该怎么做? 救命啊 HTTP会话只是一个标准TCP会话,POST只是一个符合HTTP规范的正确格式的数据块。您可以打开到web服务器的TCP连接,发送POST请求,然后关闭TCP连接。您可以查看HTTP规范(RFC2616)以了解如何正确格式化POST。您可以在以下网址找到: 一个非常基本的POST将通过TCP连接发送以下内容: POST / HTTP/1.1 Host: www.thehost.com Content-Length: 3 Content-T

如何在不等待回复的情况下发送帖子? 我该怎么做?


救命啊

HTTP会话只是一个标准TCP会话,POST只是一个符合HTTP规范的正确格式的数据块。您可以打开到web服务器的TCP连接,发送POST请求,然后关闭TCP连接。您可以查看HTTP规范(RFC2616)以了解如何正确格式化POST。您可以在以下网址找到:

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

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

Hi!
将内容和相应的长度替换为要发送的内容,将/更改为正确的路径,并将主机的主机名或IP置于主机:。。。当然,还要将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更改为正确的主机名(以及所需的端口)。

HTTP会话只是一个标准TCP会话,POST只是一个符合HTTP规范的正确格式的数据块。您可以打开到web服务器的TCP连接,发送POST请求,然后关闭TCP连接。您可以查看HTTP规范(RFC2616)以了解如何正确格式化POST。您可以在以下网址找到:

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

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

Hi!
将内容和相应的长度替换为要发送的内容,将/更改为正确的路径,并将主机的主机名或IP置于主机:。。。当然,还要将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更改为正确的主机名(以及端口,如果需要)。

例如,使用类中的异步方法之一


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

例如,使用类中的一个异步方法

var wc = new WebClient(); wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; wc.UploadStringAsync(uri, data); wc.UploadStringCompleted += (sender, e) => { // completed }; 当post完成(或失败)时,将触发相应的事件(
UploadStringCompleted
),但您不必为该事件连接任何处理程序。但是,您可能希望这样做,以检查是否存在任何错误

var wc = new WebClient(); wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; wc.UploadStringAsync(uri, data); wc.UploadStringCompleted += (sender, e) => { // completed }; var wc=新的WebClient(); wc.Headers[“内容类型”]=“应用程序/x-www-form-urlencoded”; UploadStringAsync(uri,数据); wc.UploadStringCompleted+=(发送方,e)=> { //完成 }; var wc=新的WebClient(); wc.Headers[“内容类型”]=“应用程序/x-www-form-urlencoded”; UploadStringAsync(uri,数据); wc.UploadStringCompleted+=(发送方,e)=> { //完成 };
UploadValuesSync看起来像是一个更完整的解决方案,它使用了以下内容:

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

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

UploadValuesSync看起来是一个更完整的解决方案,它使用了如下内容:

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

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

您能解释一下您的问题吗?!是的,我的问题是洪水泛滥。你能解释一下你的问题吗?!是的,我的问题是URL泛滥。添加了一个通过原始TCP套接字发送基本帖子的代码示例。添加了一个通过原始TCP套接字发送基本帖子的代码示例。如果这是错误的,我不介意否决票,但一条注释将是有用的指导。实际上,这是我可能会结束使用的方法(正在搜索某些内容),但问题是:它仍然在等待响应,只是在另一个线程上。TCP套接字连接似乎更好,但实现起来更复杂。好吧,我想我最终会使用它。如果这是错误的,我不介意向下投票,但一条注释将是有用的指导。实际上,这是我可能会最终使用的方法(正在搜索),但问题是:它仍然在等待响应,只是在另一个线程上。TCP套接字连接似乎更好,但实现起来很复杂。好吧,我想我最终会使用这个