C # WebRequest POST возвращает HTML-страницу - как отобразить ее в браузере - PullRequest
1 голос
/ 13 октября 2010

Я работаю с платежным шлюзом 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 в окне браузера пользователя, так как именно там они вводят данные своей кредитной карты?

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

если вы работаете в веб-приложении (ASP.NET), вы можете сделать это:

Markup:

 <div id="HTMLResponse" runat="server"></div>

ASP.NET:

HTMLResponse.InnerHtml = SendRequest(...); 
0 голосов
/ 13 октября 2010

Если это приложение Forms, почему бы не использовать элемент управления System.Windows.Forms.WebBrowser? У этого есть отличное свойство, DocumentStream. Подключить его к потоку так же просто, как:

        var webRequest = WebRequest.Create("http://www.google.com");
        var response = webRequest.GetResponse();
        webBrowser1.DocumentStream = response.GetResponseStream();

Возможно, может помочь переписывание документа с полностью определенными URL-адресами, хотя я подозреваю, что платежный шлюз может быть смешным с реферером (sic).

        string responseString;
        var webRequest = WebRequest.Create("http://www.google.com");
        using (var response = webRequest.GetResponse())
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            responseString = sr.ReadToEnd();
        }
        //consider rewriting some URLs in the response so they are fully qualified
        //in method below.
        //responseString=ProcessResponseString();
        //squirt response back to user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...