コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
                    }
                }
            }
        }
コード例 #4
0
        /// <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;
            }
        }