HttpWebRequest 会自动发送 200 OK 吗?

Posted

技术标签:

【中文标题】HttpWebRequest 会自动发送 200 OK 吗?【英文标题】:Does HttpWebRequest send 200 OK automatically? 【发布时间】:2010-12-14 09:16:15 【问题描述】:

背景:我正在实施 Paypal IPN 处理程序。

Paypal 上的这个很棒的 article 声明,在我阅读响应后,我需要向 Paypal 发送 200 OK。

IPN请求的处理如下:

//Send the request to PayPal and get the response
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), 
                         System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();

StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd(); //returns VERIFIED
streamIn.Close();

根据以下(来自文章),代码(我猜)应该向 Paypal 发送 200 OK:

PayPal will respond with either VERIFIED or INVALID. After you receive this response, be sure to send 200 OK to prevent additional attempts from PayPal to send an IPN

我没有看到任何明确的 HTTP 响应被发送为“200 OK”。

使用的

如果是,那发生在什么时候?

如果不是,如何使用 HttpWebRequest 发送 200 OK 响应?使用 HttpWebRequest 或套接字更容易做到这一点吗?

【问题讨论】:

我不熟悉这个 paypal API,但是 HttpWebRequest 不发送状态。它在发出请求时从服务器接收状态。能否提供您所引用文章的链接? 那是哪篇“关于 PayPal 的精彩文章”? 抱歉,我忘记粘贴链接了。这里:codeproject.com/KB/aspnet/paypal_c_aspnet.aspx#PostPayment 还编辑了帖子。 【参考方案1】:

对您真正提出的问题的简短回答是肯定的,如果 您的 页面成功执行,ASP.NET 将发回 200。您所指的文章中的要点是关于您向 Paypal 发送请求以响应它对您的请求,因此正如有人已经指出的那样,发送 200 与 HttpWebRequest 对象无关。

因此,在本文的例子中,如果您想将 200 发送回 Paypal,一旦页面成功执行,ASP.NET 将自动执行此操作。

【讨论】:

非常感谢!现在对我来说很有意义。 “收到 VERIFIED 后,发送 200 OK”部分让我感到困惑,认为我应该将其发送回 VERIFIED 的来源。【参考方案2】:

获得答案的最简单方法是使用Wireshark 并查看来回发送的具体内容。

【讨论】:

以上是关于HttpWebRequest 会自动发送 200 OK 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如果服务器返回的不是 200,HttpWebRequest.GetResponse() 是不是总是抛出 WebException?

急急急!C#中winform发送 HttpWebRequest请求,不能连续发送

HttpClient 与 HttpWebRequest

HttpWebRequest.GetRequestStream() 超时

C# HttpWebRequest访问页面时自动识别编码

C# HttpWebRequest访问页面时自动识别编码