/// <summary> /// Post 방식의 XmlHttp 통신. XmlDocument를 받는다. /// </summary> /// <param name="document"></param> /// <returns></returns> public XmlDocument PostXml(XmlDocument document) { document.ShouldNotBeNull("requestDoc"); Guard.Assert(document.IsValidDocument(), @"document is not valid xml document."); using (Stream stream = PostStream(document)) { return(XmlTool.CreateXmlDocument(stream)); } }
/// <summary> /// GET 방식의 XML HTTP 통신 /// </summary> /// <returns>XML문자열인 경우 XmlDocument 객체로 만들어서 반환</returns> public XmlDocument GetXml() { XmlDocument result = null; Stream stream = GetStream(); if (stream != null) { result = XmlTool.CreateXmlDocument(stream); } return(result); }
public void PostXml() { // NOTE : 이 테스트가 실패한다면, 웹 서버 Page의 ValidateRequest 옵션이 False 인지를 확인해라. // foreach (string url in testUrls) { try { XmlDocument postDoc = XmlTool.CreateXmlDocument("<PostXml>Data for PostXml</PostXml>"); var doc = XmlHttpClient.PostXml(url + XmlHttpMethods.PostXml, postDoc, true); Assert.IsNotNull(doc, "url=" + url); Assert.IsTrue(doc.IsValidDocument(), "url=" + url); Console.WriteLine("url=" + url); Console.WriteLine("returns=" + doc.OuterXml); } catch (Exception ex) { if (log.IsErrorEnabled) { log.ErrorException("웹 서버 Page의 ValidateRequest=False 이어야 합니다.", ex); } } } }
/// <summary> /// /// </summary> /// <param name="context"></param> public static void DoAction(HttpContext context) { var request = context.Request; var response = context.Response; // string action = ConvertTool.DefValue(request["Action"], XmlHttpMethods.GetXml); string action = request["Action"].AsText(XmlHttpMethods.GetXml); if (IsDebugEnabled) { log.Debug("Action = " + action); } response.Clear(); switch (action.ToUpper()) { case "GETXML": response.ContentType = "text/xml"; response.Write("<GetXml><Action>GetXml</Action></GetXml>"); break; case "POSTTEXT": response.ContentType = "text/plain"; string payload = request.Form.ToString(); response.Write("Action=" + XmlHttpMethods.PostText); response.Write("PostText with payload= " + payload); break; case "POSTXML": response.ContentType = "text/xml"; using (var reader = new StreamReader(request.InputStream)) { // string으로 변환시에는 null terminator를 제거한다. string xmlText = reader.ReadToEnd().TrimEnd('\0'); if (IsDebugEnabled) { log.Debug("PostXml action with form data=[{0}]", xmlText); } if (xmlText.IsWhiteSpace()) { xmlText = "<PostXml>Input stream is empty.</PostXml>"; } XmlDoc doc = XmlTool.CreateXmlDocument(xmlText); if (IsDebugEnabled) { log.Debug("Action:PostXml, returns: " + doc.Xml); } //response.Clear(); doc.Save(response.OutputStream); // response.Write(doc.Xml); } break; case "GETTEXT": default: response.ContentType = "text/plain"; response.Write("Action = " + XmlHttpMethods.GetText); response.Write("; QueryParams = " + request.QueryString); break; } }