public static WebResponse SendRequest(IEnvelope xml, System.Configuration.Configuration config) { var requestString = new StringBuilder(); var settings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8, OmitXmlDeclaration = true }; using (var writer = XmlWriter.Create(requestString, settings)) { if (writer == null) { throw new Exception("Unable to write to stream."); } var ns = new XmlSerializerNamespaces(); ns.Add("urn", "urn:tempuri-org:webservice:Web"); ns.Add("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); var ser = new XmlSerializer(xml.GetType()); ser.Serialize(writer, xml, ns); } var requestXml = new XmlDocument(); requestXml.LoadXml(requestString.ToString()); var byteData = Encoding.UTF8.GetBytes(requestXml.OuterXml); string url = config.AppSettings.Settings["AWWebServiceURL"].Value; var req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "text/xml"; req.ContentLength = byteData.Length; req.Headers.Add("SOAPAction", ""); using (var requestStream = req.GetRequestStream()) { requestStream.Write(byteData, 0, byteData.Length); } WebResponse response; try { response = req.GetResponse(); } catch (WebException ex) { response = ex.Response; } return(response); }
public void TestITackCRUD() { IBoards boards = GetMockedIBoards(); IEnvelope envelope = _erector.Container.Resolve <IEnvelope>(); envelope.ServiceRoute = "ChatMessage"; IChatMessageEnvelope chatMessageEnvelope = _erector.Container.Resolve <IChatMessageEnvelope>(); chatMessageEnvelope.ServiceRoute = "ChatMessage"; //Boards cannot be null. ITack nullBoardsTack = new Tack(null); try { IEnvelope envelopeNullBoard = nullBoardsTack.GET(envelope); Assert.Fail(); } catch (InvalidOperationException ex) { string message = ex.Message; Assert.AreEqual(message, nullBoardsTack.ExceptionMessage_BoardsCannotBeNull); } ITack tack = new Tack(boards); //Create IEnvelope createEnvelope = tack.POST(envelope); Assert.IsNotNull(createEnvelope); Assert.AreEqual(createEnvelope.ServiceRoute, envelope.ServiceRoute); IEnvelope createChatMessageEnvelope = tack.POST(chatMessageEnvelope); Assert.IsNotNull(createChatMessageEnvelope); Assert.AreEqual(createChatMessageEnvelope.ServiceRoute, envelope.ServiceRoute); Assert.IsTrue(createChatMessageEnvelope.GetType() == typeof(ChatMessageEnvelope)); //Read IEnvelope readEnvelope = tack.GET(envelope); Assert.IsNotNull(readEnvelope); Assert.AreEqual(readEnvelope.ServiceRoute, envelope.ServiceRoute); IEnvelope readChatMessageEnvelope = tack.GET(chatMessageEnvelope); Assert.IsNotNull(readChatMessageEnvelope); Assert.AreEqual(readChatMessageEnvelope.ServiceRoute, envelope.ServiceRoute); Assert.IsTrue(readChatMessageEnvelope.GetType() == typeof(ChatMessageEnvelope)); //Update IEnvelope updateEnvelope = tack.PUT(envelope); Assert.IsNotNull(updateEnvelope); Assert.AreEqual(updateEnvelope.ServiceRoute, envelope.ServiceRoute); IEnvelope updateChatMessageEnvelope = tack.PUT(chatMessageEnvelope); Assert.IsNotNull(updateChatMessageEnvelope); Assert.AreEqual(updateChatMessageEnvelope.ServiceRoute, envelope.ServiceRoute); Assert.IsTrue(updateChatMessageEnvelope.GetType() == typeof(ChatMessageEnvelope)); //Delete IEnvelope deleteEnvelope = tack.DELETE(envelope); Assert.IsNotNull(deleteEnvelope); Assert.AreEqual(deleteEnvelope.ServiceRoute, envelope.ServiceRoute); IEnvelope deleteChatMessageEnvelope = tack.DELETE(chatMessageEnvelope); Assert.IsNotNull(deleteChatMessageEnvelope); Assert.AreEqual(deleteChatMessageEnvelope.ServiceRoute, envelope.ServiceRoute); Assert.IsTrue(deleteChatMessageEnvelope.GetType() == typeof(ChatMessageEnvelope)); }