2009-11-10 47 views
8

Hãy tha thứ cho tôi nếu đây là một câu hỏi ngu ngốc. Tôi không có kinh nghiệm với lập trình web. Tôi đang triển khai thành phần thanh toán của ứng dụng .net mvc của tôi. Thành phần tương tác với dịch vụ thanh toán bên ngoài. Dịch vụ thanh toán chấp nhận yêu cầu đăng bài http theo mẫu sauTạo yêu cầu gửi http từ bộ điều khiển

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

Tôi biết điều này rất dễ làm bằng cách thêm biểu mẫu trong dạng xem. Tuy nhiên, tôi không muốn quan điểm của tôi để đối phó với các thông số của bên thứ ba. Tôi muốn xem của tôi để gửi thông tin cho bộ điều khiển của tôi, sau đó điều khiển tạo ra các url cần thiết và sau đó gửi yêu cầu. Sau đây là mã giả.

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

Có thể làm như vậy không? C# có thư viện tích hợp để tạo yêu cầu http không? Cảm ơn trước.

+0

Bạn có thể cho chúng tôi biết cách bạn đã thực hiện việc này không? – Raha

+0

Tôi đã làm những gì Andy gợi ý. –

Trả lời

6

Bạn sẽ muốn sử dụng lớp HttpWebRequest. Đảm bảo đặt thuộc tính Phương thức để đăng - đây là an example.

+0

Cảm ơn. Bạn đã cứu ngày của tôi. –

3

Chắc chắn có một thư viện tích hợp để tạo các yêu cầu http. Dưới đây là hai chức năng hữu ích mà tôi đã nhanh chóng chuyển đổi từ VB.NET sang C#. Phương pháp đầu tiên thực hiện một bài thứ hai thực hiện một get. Tôi hy vọng bạn tìm thấy chúng hữu ích.

Bạn sẽ muốn đảm bảo nhập không gian tên 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

Nó thực sự tạo sự khác biệt nếu ASP.NET đưa ra yêu cầu hoặc khách hàng đưa ra yêu cầu. Nếu tài liệu của nhà cung cấp nói rằng bạn nên sử dụng biểu mẫu có hành động nhất định phải được trình duyệt khách mời gửi thì điều này có thể là cần thiết.

Trong nhiều trường hợp người dùng (khách hàng) đăng một số giá trị cho nhà cung cấp, nhập một số dữ liệu tại trang web của nhà cung cấp và sau đó được chuyển hướng đến trang web của bạn một lần nữa. Bạn không thể thực hiện luồng ứng dụng này trên máy chủ.

Các vấn đề liên quan