Как вызвать внешний URL из решения ASP.NET MVC - PullRequest
7 голосов
/ 26 августа 2010

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

У меня есть веб-приложение ASP.NET MVC 2, в котором у меня есть actionResult. Мне нужно сделать вызов для меня.этот AR для обработки некоторых операций с данными, и после этого мне нужно, чтобы он вызывал внешний URL-адрес, который на самом деле является корпоративным модулем, который обрабатывает отправку сообщений на телефоны нашей компании.это:

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

Мне не нужно возвращать сообщения или что-нибудь.Просто хочу позвонить по тому внешнему URL, который, конечно, выходит за рамки моего собственного веб-приложения.(Я не хочу перенаправлять).Этот URL должен вызываться за графическим интерфейсом, чтобы пользователь никогда не осознавал.И страница, которую они просматривают, не должна быть затронута.

Я пытался с:

Server.Execute(url);

Однако не работает.Я слышал, что некоторые люди ходят по этому поводу, имея скрытый iFrame на странице.Установка src в URL, который может понадобиться, а затем каким-то образом выполнить это, чтобы создать экземпляр вызова.Мне это не кажется таким элегантным, но если это единственное решение, есть ли у кого-нибудь пример того, как это сделать?Или, если у вас есть более изящное предложение, я весь в ушах.

Ответы [ 3 ]

9 голосов
/ 30 августа 2010

Я наконец-то начал работать с этим фрагментом кода:

 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);
1 голос
/ 26 августа 2010

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

  • После выполнения AR, используйте Webclient , чтобы вызвать 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- не блокирует)

0 голосов
/ 26 августа 2010

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

...