C#WebRequest POST返回Html页面-如何在浏览器中显示

C#WebRequest POST返回Html页面-如何在浏览器中显示,c#,webrequest,C#,Webrequest,我正在使用SagePay支付网关 在一个签出按钮上,单击我正在使用下面的方法将数据(包含交易数据)发布到SagePay,SagePay然后以html页面的形式返回结果 public string SendRequest(string url, string postData) { var uri = new Uri(url); var request = WebRequest.Create(uri); var encoding = new UTF8Encoding();

我正在使用SagePay支付网关

在一个签出按钮上,单击我正在使用下面的方法将数据(包含交易数据)发布到SagePay,SagePay然后以html页面的形式返回结果

public string SendRequest(string url, string postData)
{
    var uri = new Uri(url);
    var request = WebRequest.Create(uri);
    var encoding = new UTF8Encoding();
    var requestData = encoding.GetBytes(postData);

    request.ContentType = "application/x-www-form-urlencoded";
    request.Method = "POST";
    request.Timeout = (300 * 1000); //TODO: Move timeout to config
    request.ContentLength = requestData.Length;

    using (var stream = request.GetRequestStream())
    {
        stream.Write(requestData, 0, requestData.Length);
    }

    var response = request.GetResponse();

    string result;

    using (var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
    {
        result = reader.ReadToEnd();
    }

    return result;
}
如何在用户浏览器窗口中显示返回的html,因为这将是他们输入信用卡信息的地方?

假设这是一个表单应用程序,为什么不使用控件?它有一个漂亮的属性。将其连接到流非常简单:

        var webRequest = WebRequest.Create("http://www.google.com");
        var response = webRequest.GetResponse();
        webBrowser1.DocumentStream = response.GetResponseStream();
也许用完全限定的URL重写文档可能会有所帮助,尽管我怀疑支付网关可能会对referer(原文如此)感到有趣


如果您在Web应用程序(ASP.NET)中工作,则可以执行以下操作:

标记:

 <div id="HTMLResponse" runat="server"></div>
HTMLResponse.InnerHtml = SendRequest(...); 

您使用哪种类型的SagePay集成?表单、服务器或直接?这将是表单集成。。集成工具包提供了非常糟糕的功能。可能不应该直接将第三方应用程序的结果输出到您的网站中(即使它是可信的,比如SagePay)。应该检查HTTP响应,将需要的信息提取到某种“结果”模型中,然后绑定到HTML中。关键是,只需要你需要的东西(成功/失败,信息信息等),然后根据这些信息定制你的用户界面。但是,通过表单集成,你可以进入SagePay页面输入支付信息,而这些页面是html从上述方法返回的页面。这不是windows表单应用程序,而是web表单网站
HTMLResponse.InnerHtml = SendRequest(...);