Как вызвать внешний URL из решения ASP.NET MVC

Первый пост в истории. Так что лучше сделайте его хорошим.

У меня есть веб-приложение 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, который может понадобиться, а затем каким-то образом выполнить это, чтобы создать экземпляр вызова. Это не кажется мне таким элегантным, но если это единственное решение, У кого-нибудь есть пример того, как это сделать? Или, если у вас есть более изящное предложение, я весь в ушах.

7
задан Vadim Kotov 18 August 2017 в 12:48
поделиться

3 ответа

Наконец-то я заработал с этим фрагментом кода:

 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);
9
ответ дан 7 December 2019 в 01:14
поделиться

Вы можете просто использовать " return Redirect(url);"

0
ответ дан 7 December 2019 в 01:14
поделиться

Поскольку вы не ожидаете возвращаемого значения из URL-адреса, самый простой способ:

  • После выполнения AR используйте Веб-клиент для запуска 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://x.x.x.x/cgi-bin/");
        wc.UploadDataAsync(uri, System.Text.Encoding.ASCII.GetBytes(sb);

В примере используется HTTP POST и асинхронный вызов (поэтому он будет возвращаться сразу после активации URL-адреса — без блокировки)

1
ответ дан 7 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: