// // GET: /Relay/ public ActionResult Index(TwilioRequestViewModel vm) { var cf = new ChannelFactory <IAzureTunnelServiceChannel>("relay"); using (var ch = cf.CreateChannel()) { vm.Method = Request.HttpMethod; string result = ch.Relay(vm); return(Content(result, "application/xml")); } }
public string Relay(TwilioRequestViewModel vm) { StringBuilder paramList = new StringBuilder(); var props = vm.GetType().GetProperties(); foreach (var prop in props) { string param = string.Format("{0}={1}&", prop.Name, prop.GetValue(vm, new object[] { })); paramList.Append(param); } HttpWebRequest request = null; switch (vm.Method) { case "POST": request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:46622/Sms/Index"); request.Method = vm.Method; var requeststream = request.GetRequestStream(); byte[] bytes = System.Text.ASCIIEncoding.Default.GetBytes(paramList.ToString()); requeststream.Write(bytes, 0, bytes.Length); break; case "GET": request = (HttpWebRequest)HttpWebRequest.Create(string.Format("{0}?{1}", "http://localhost:46622/Sms/Index", paramList.ToString())); request.Method = vm.Method; break; } var response = request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string result = String.Empty; try { result = reader.ReadToEnd(); } catch (Exception exc) { Debug.WriteLine(exc.Message); } Debug.WriteLine(result); return result; } }