2009-11-10 18 views
8

Przebacz mi, jeśli to głupie pytanie. Nie mam dużego doświadczenia z programowaniem w Internecie. Wdrażam składnik płatności mojej aplikacji .net mvc. Komponent współdziała z zewnętrzną usługą płatniczą. Usługa płatności akceptuje żądania HTTP POST w następującej postaciGenerowanie żądania http post z kontrolera

http://somepaymentservice.com/pay.do?MerchantID=xxx&Price=xxx&otherparameters 

wiem, że to martwy łatwe dodając formularz w widoku. Nie chcę jednak, aby moje poglądy zajmowały się parametrami stron trzecich. Chciałbym, aby mój widok przesyłał informacje do kontrolera, a następnie kontroler generuje wymagany adres URL, a następnie wysyła żądanie. Poniżej znajduje się pseudo kod.

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult PayForOrder(OrderForm order) 
{ 
    var url = _paymentService.GetUrlFromOrder(order); 
    SendPostRequest(url); 
    return View("FinishedPayment"); 
} 

Czy to możliwe, aby to zrobić? Czy C# ma wbudowaną bibliotekę do generowania żądania http? Z góry dzięki.

+0

Czy możesz nam powiedzieć, jak to zrobiłeś? – Raha

+0

Zrobiłem to, co zasugerował Andy. –

Odpowiedz

6

Będziesz chciał użyć klasy HttpWebRequest. Upewnij się, że właściwość Method została ustawiona na - tutaj jest an example.

+0

Dzięki. Uratowałeś mi dzień. –

3

Na pewno jest wbudowana biblioteka do generowania żądań http. Poniżej znajdują się dwie pomocne funkcje, które szybko przekonwertowałem z VB.NET na C#. Pierwsza metoda wykonuje post, druga wykonuje get. Mam nadzieję, że ci się przydadzą.

Należy zaimportować przestrzeń nazw System.Net.

2

To naprawdę robi różnicę, jeśli program ASP.NET wysyła żądanie lub klient wysyła żądanie. Jeśli dokumentacja dostawcy mówi, że powinieneś użyć formularza z podaną akcją, która musi zostać przesłana przez przeglądarkę klienta, może to być konieczne.

W wielu przypadkach użytkownik (klient) wysyła pewne wartości do dostawcy, wprowadza niektóre dane w witrynie dostawcy, a następnie ponownie przekierowuje do witryny. Nie można wykonać tego przepływu aplikacji na serwerze.

Powiązane problemy