예제 #1
0
        public void InitializeWebService(HttpListenerContext _Context, string _MatchedPrefix, IBTracingServiceInterface _TracingService = null)
        {
            if (bInitialized)
            {
                return;
            }
            bInitialized = true;

            TracingService = _TracingService;

            var SplittedRawUrl        = _Context.Request.RawUrl.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            var SplittedMatchedPrefix = _MatchedPrefix.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

            if (SplittedRawUrl != null && SplittedMatchedPrefix != null && SplittedRawUrl.Length >= SplittedMatchedPrefix.Length)
            {
                for (int i = 1; i < SplittedMatchedPrefix.Length; i++)
                {
                    if (SplittedMatchedPrefix[i] == "*")
                    {
                        RestfulUrlParameters[SplittedRawUrl[i - 1]] = SplittedRawUrl[i];
                    }
                }
            }

            var Params = BWebUtilities.AnalyzeURLParametersFromRawURL(_Context.Request.RawUrl);

            if (Params != null)
            {
                foreach (var Param in Params)
                {
                    UrlParameters[Param.Item1] = Param.Item2;
                }
            }
        }
예제 #2
0
        private static void AnalyzeResponse(
            HttpWebResponse _Response,
            out bool _bHttpRequestSuccess,
            out int _HttpRequestResponseCode,
            out string _HttpRequestResponseContentType,
            out BStringOrStream _HttpRequestResponseContent,
            out Dictionary <string, IEnumerable <string> > _HttpRequestResponseHeaders,
            Action <string> _ErrorMessageAction)
        {
            _bHttpRequestSuccess            = false;
            _HttpRequestResponseCode        = BWebResponse.Error_InternalError_Code;
            _HttpRequestResponseContentType = "";
            _HttpRequestResponseContent     = null;
            _HttpRequestResponseHeaders     = new Dictionary <string, IEnumerable <string> >();

            try
            {
                _HttpRequestResponseCode = (int)_Response.StatusCode;

                BWebUtilities.InjectHeadersIntoDictionary(_Response.Headers, _HttpRequestResponseHeaders);

                _HttpRequestResponseContentType = _Response.ContentType;

                using (var ResStream = _Response.GetResponseStream())
                {
                    var CopyStream = new BMemoryTributary(BUtility.ReadToEnd(ResStream));

                    _HttpRequestResponseContent = new BStringOrStream(CopyStream, CopyStream.Length, () => { try { CopyStream?.Dispose(); } catch { } });
                }

                _bHttpRequestSuccess = true;
            }
            catch (Exception e)
            {
                _ErrorMessageAction?.Invoke("Error: RequestRedirection-AnalyzeResponse: " + e.Message + ", Trace: " + e.StackTrace);
                _bHttpRequestSuccess = false;
            }
        }