如果这是一个愚蠢的问题,请原谅我。我对Web编程不是很熟悉。 我正在实现我的.net mvc应用程序的支付组件。该组件与外部支付服务交互。付款服务接受以下表格中的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 :(得分:7)
您需要使用HttpWebRequest课程。一定要将Method属性设置为post - 这里是an example。
答案 1 :(得分:4)
当然有一个内置的库来生成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 :(得分:2)
如果ASP.NET发出请求或客户端发出请求,它确实会有所不同。 如果提供者的文档说您应该使用具有必须由客户端浏览器提交的给定操作的表单,那么这可能是必要的。
在很多情况下,用户(客户端)会向提供商发布一些值,在提供商网站上输入一些数据,然后再次重定向到您的网站。您无法在服务器端执行此应用程序流。