2009-11-10 138 views
8

如果這是一個愚蠢的問題,請原諒我。我對Web編程不是很有經驗。 我正在實施我的.net mvc應用程序的付款組件。該組件與外部支付服務交互。支付服務接受以下形式的http post請求從控制器生成http post請求

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

我知道在View中添加窗體很容易做到。但是,我不希望我的意見處理第三方參數。我希望我的視圖將信息提交給我的控制器,然後控制器生成所需的url,然後發出請求。以下是僞代碼。

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

是否可以這樣做呢? c#是否有內置庫來生成http請求? 在此先感謝。

+0

你能告訴我們你是怎麼做到的嗎? – Raha 2011-10-12 23:31:00

+0

我做了安迪的建議。 – 2011-10-13 00:04:22

回答

6

你會想要使用HttpWebRequest類。一定要設置方法屬性發布 - 這裏是an example

+0

謝謝。你拯救了我的一天。 – 2009-11-10 03:29:53

3

確實有一個內置庫來生成http請求。以下是我很快從VB.NET轉換爲C#的兩個有用功能。第一種方法執行帖子,第二種方法執行get。我希望你覺得它們很有用。

你會想確保導入System.Net命名空間。

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

如果ASP.NET發出請求或客戶端發出請求,那麼它真的有區別。 如果提供者的文檔說你應該使用必須由客戶端瀏覽器提供給定操作的表單,那麼這可能是必需的。

在很多情況下,用戶(客戶端)向提供者發佈一些值,在提供者站點輸入一些數據,然後再次重定向到您的站點。您不能在服務器端執行此應用程序流。