Первый пост в истории. Так что лучше сделайте его хорошим.
У меня есть веб-приложение ASP.NET MVC 2, в котором у меня есть actionResult, мне нужно сделать вызов для меня.
Дело в том, что мне нужен этот A. R для обработки некоторых операций с данными, и после этого мне нужно вызвать внешний URL-адрес, который на самом деле является корпоративным модулем, который обрабатывает отправку сообщений на телефоны нашей компании.
Просто нужно вызвать URL-адрес, который выглядит следующим образом:
string url = "http://x.x.x.x/cgi-bin/npcgi?no=" + phoneNumber + "&msg=" + message;
Мне не нужно никакого ответного сообщения или чего-либо еще. Просто хочу позвонить по тому внешнему URL, который, конечно, выходит за рамки моего собственного веб-приложения. (Я не хочу перенаправлять). Этот 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://x.x.x.x/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);
Вы можете просто использовать " return Redirect(url);"
Поскольку вы не ожидаете возвращаемого значения из URL-адреса, самый простой способ:
Пример кода
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://x.x.x.x/cgi-bin/");
wc.UploadDataAsync(uri, System.Text.Encoding.ASCII.GetBytes(sb);
В примере используется HTTP POST и асинхронный вызов (поэтому он будет возвращаться сразу после активации URL-адреса — без блокировки)