2010-10-12 3 views
2

Мне нужно поместить POST некоторые скрытые поля на страницу, которые мне нужно загрузить в окне браузера .WebRequest для данных POST, но как насчет скрытых полей?

Это для интеграции SagePay формы, как на странице 6: http://www.docstoc.com/docs/10745827/Sage-Pay-Form-Protocol-and-Integration-Guidelines

Я уже использую WebRequest для создания POST, но как я могу отправить 4 скрытых полей они требуют?

Также, как я могу загрузить возвращенный html в браузер; этот html от SagePay, где клиент вводит данные своей кредитной карты?

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; 
    } 

ответ

1

Просто добавьте 4 скрытых поля в строку postData. Это можно сделать «на лету» в этом методе или в запросе.

«Скрытый» аспект скрыт только с точки зрения графического интерфейса в браузере.

+0

Итак, у меня было бы что-то вроде этого для 4 скрытых полей для postData - VPSProtocol = 2.23 & TxType = PAYMENT & Vendor = RetailersLtd & Crypt = crypt. Однако Crypt, как показано на стр. 36, имеет различные значения. поэтому, как будет выглядеть postData выше? – asn1981

+0

@Noob: Посмотрите на стр. 41 - в нем описывается, как сделать эту работу. –

+0

@Reed Copsey: Я думаю, что на странице 41 показано, что ключ опции Basket воссоздает корзину покупок на страницах SagePay, но это не то, о чем я говорю выше. – asn1981