#c# #asp.net-mvc #asp.net-mvc-3
#c# #asp.net-mvc #asp.net-mvc-3
Вопрос:
У меня есть ASP.net Приложение MVC3. В одном из моих контроллеров есть действие для отправки SMS некоторым пользователям нашего приложения. Теперь, согласно нашему поставщику SMS, ему потребуется http-запрос к своему серверу (скажем http://www.sms-sender-server.com). Существует ряд параметров запроса, которые будут добавлены к этому URI. Затем запрос необходимо отправить в указанный выше URI с параметрами запроса, и sms-сервер отправит код состояния (ответ) обратно, указывающий, была ли отправка sms неудачной или успешной. Я не уверен, как мы создаем такой запрос в ASP.net (или C #, если это кажется логичным). Если кто-нибудь может направить меня в правильном направлении, я был бы благодарен.
Ответ №1:
Используйте класс WebClient. Это проще в использовании, чем WebRequest (и его производные). И внутренне он также использует WebRequest.
Ответ №2:
Вам нужен WebRequest
класс. В документации есть пример:
// Create a new 'Uri' object with the specified string.
Uri myUri =new Uri("http://www.contoso.com");
// Create a new request to the above mentioned URL.
WebRequest myWebRequest= WebRequest.Create(myUri);
// Assign the response object of 'WebRequest' to a 'WebResponse' variable.
WebResponse myWebResponse= myWebRequest.GetResponse();
Проверьте StatusCode
свойство WebResponse
объекта на предмет возвращенного статуса от поставщика SMS.
Комментарии:
1. WebRequest (или HttpWebRequest), похоже, вполне подходит для моего сценария. Однако мне было интересно, почему у него нет параметров name / value для построения своей строки запроса, как у WebClient ( msdn.microsoft.com/en-us/library /… ). Придется ли мне создавать строку запроса вручную без помощи пар Имя / значение?
2. Да, вы будете — ответ заключается в том, что
WebRequest
обычно это реализация более низкого уровня, чемWebClient
поэтому, хотя у вас больше контроля, вы выполняете меньше работы за вас. Но поскольку вас интересует код состояния, а не фактический ответ, имеет смысл использоватьWebRequest
.
Ответ №3:
Вы также можете использовать класс HttpWebRequest.
Ответ №4:
Я знаю, что в названии вопроса конкретно говорится о синхронных вызовах, но вы, возможно, действительно захотите изучить асинхронные контроллеры для сторонних сетевых запросов.
http://msdn.microsoft.com/en-us/library/ee728598 (v= против 98).aspx