2009-11-10 17 views
8

Bu aptal bir soru ise beni bağışla. Web programlama ile çok tecrübeli değilim. .net mvc uygulamasının ödeme bileşenini uyguluyorum. Bileşen, harici bir ödeme hizmeti ile etkileşime girer. ödeme hizmeti aşağıdaki biçimde bu Görünümde bir form ekleyerek yapmak kolay öldüğünü biliyorumDenetleyiciden http iletme talebi oluştur

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

http sonrası isteğini kabul eder. Ancak, görüşlerimin üçüncü taraf parametreleriyle ilgilenmesini istemiyorum. Görünümümün denetleyicime bilgi göndermesini istiyorum, ardından denetleyici gerekli URL'yi oluşturur ve ardından isteği gönderir. Aşağıdaki sözde koddur.

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

Bu mümkün mü? C# http isteği oluşturmak için yerleşik kütüphaneye sahip mi? Şimdiden teşekkürler.

+0

Bunu nasıl yaptığınızı bize anlatabilir misiniz? – Raha

+0

Andy'nin önerdiği şeyi yaptım. –

cevap

6

HttpWebRequest sınıfını kullanmak isteyeceksiniz. Göndermek için Yöntem özelliğini ayarladığınızdan emin olun - işte an example.

+0

Teşekkürler. Günümü kurtardın. –

3

Kesinlikle http istekleri oluşturmak için yerleşik bir kütüphane var. Aşağıda, hızlıca VB.NET'ten C# 'a dönüştürdüğüm iki yararlı işlev vardır. İlk yöntem, bir ikincisini gerçekleştirir, ikincisi bir get yapar. Umarım onları yararlı bulursun.

System.Net ad alanını içe aktardığınızdan emin olmak istersiniz. ASP.NET bir istekte veya istemci istekte eğer

public static HttpWebResponse SendPostRequest(string data, string url) 
{ 

    //Data parameter Example 
    //string data = "name=" + value 

    HttpWebRequest httpRequest = HttpWebRequest.Create(url); 
    httpRequest.Method = "POST"; 
    httpRequest.ContentType = "application/x-www-form-urlencoded"; 
    httpRequest.ContentLength = data.Length; 

    var streamWriter = new StreamWriter(httpRequest.GetRequestStream()); 
    streamWriter.Write(data); 
    streamWriter.Close(); 

    return httpRequest.GetResponse(); 
} 

public static HttpWebResponse SendGetRequest(string url) 
{ 

    HttpWebRequest httpRequest = HttpWebRequest.Create(url); 
    httpRequest.Method = "GET"; 

    return httpRequest.GetResponse(); 
} 
2

O gerçekten bir fark yaratıyor. Sağlayıcının belgeleri, istemci tarayıcısı tarafından sunulması gereken eylemi içeren bir form kullanmanız gerektiğini söylüyorsa, bu gerekli olabilir.

Birçok durumda, kullanıcı (istemci) sağlayıcıya bazı değerler gönderir, sağlayıcılar sitesinde bazı veriler girer ve ardından sitenize yeniden yönlendirilir. Bu uygulama akışını serveride yapamazsınız.