如何从ASP.NET MVC解决方案调用外部URL

第一篇文章在哪里。 所以最好把它变成一个好的。

我有一个ASP.NET MVC 2 Web应用程序,我有一个actionResult,我需要为我做一个电话。

问题是我需要这个AR来处理一些数据操作,之后我需要它来调用外部URL,这实际上是一个处理向我们公司手机电话发送消息的公司模块。

它只需要调用如下所示的URL:

string url = "http://xxxx/cgi-bin/npcgi?no=" + phoneNumber + "&msg=" + message; 

我不需要任何回复信息或任何东西。 只想调用外部URL,这当然超出了我自己的Web应用程序的范围。 (我不想重定向)。 必须在GUI后面调用该URL,而无需用户意识到。 并且他们正在查看的页面不得受到影响。

我尝试过:

 Server.Execute(url); 

但是没有奏效。 我听说有些人通过在页面上隐藏iFrame来解决这个问题。 将src设置为url可能需要然后以某种方式执行它,以实例化调用。 它对我来说似乎并不那么优雅,但如果这是唯一的解决方案,那么有没有人会举例说明如何做到这一点。 或者,如果你有一个更圆滑的建议,我全都耳朵。

我终于得到了这段代码:

  string messageToCallInPatient = "The doctor is ready to see you in 5 minutes. Please wait outside room " + roomName; string url = "http://xxxx/cgi-bin/npcgi?no=" + phoneNumber + "&msg=" + messageToCallInPatient; HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(string.Format(url)); webReq.Method = "GET"; HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse(); //I don't use the response for anything right now. But I might log the response answer later on. Stream answer = webResponse.GetResponseStream(); StreamReader _recivedAnswer = new StreamReader(answer); 

由于您不希望url返回值,因此最简单的方法是

  • AR执行后,使用Webclient触发URL
  • 通过HTTP GET或POST(同步或异步)

示例代码

  WebClient wc = new WebClient(); wc.UploadProgressChanged += (sender, evtarg) => { Console.WriteLine(evtarg.ProgressPercentage); }; wc.UploadDataCompleted += (sender, evtarg) => { String nResult; if (evtarg.Result != null) { nResult = Encoding.ASCII.GetString(evtarg.Result); Console.WriteLine("STATUS : " + nResult); } else Console.WriteLine("Unexpected Error"); }; String sp= "npcgi??no=" + phoneNumber + "&msg=" + message; System.Uri uri = new Uri("http://xxxx/cgi-bin/"); wc.UploadDataAsync(uri, System.Text.Encoding.ASCII.GetBytes(sb); 

该示例使用HTTP POST和异步调用(因此它将在触发URL后立即返回 – 非阻塞)

您可以简单地使用“return Redirect(url);”