コード例 #1
0
        public void TestWebSite2Post()
        {
            const string json         = "{Hometown:\"Katmandu\"}";
            string       relativePath = @"..\..\..\PortlessWebHost.TestWebSite2";
            string       physicalPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath));

            using (WebHost host = new WebHost("/", physicalPath))
            {
                PortlessWebRequest request = host.CreateRequest(new Uri("http://localhost/api/Me"));
                request.Method        = "POST";
                request.ContentType   = "application/json";
                request.ContentLength = json.Length;
                using (Stream requestStream = request.GetRequestStream())
                {
                    using (TextWriter requestWriter = new StreamWriter(requestStream))
                    {
                        requestWriter.Write(json);
                    }
                }

                using (WebResponse response = request.GetResponse())
                {
                    using (MemoryStream responseStream = (MemoryStream)response.GetResponseStream())
                    {
                        string responseText = Encoding.UTF8.GetString(responseStream.ToArray());
                        responseText.Should().Contain("Hometown = Katmandu");
                    }
                }
            }
        }
コード例 #2
0
 private void AddBody(Request request, PortlessWebRequest webRequest)
 {
     if (request.Body != null)
     {
         using (Stream requestStream = webRequest.GetRequestStream())
         {
             using (TextWriter requestWriter = new StreamWriter(requestStream))
             {
                 requestWriter.Write(request.Body);
             }
         }
     }
 }
コード例 #3
0
        public HtmlWebResponse getResponse(HtmlWebRequest wr)
        {
            PortlessWebRequest request = host.CreateRequest(new Uri(wr.getUrl().toString()));

            request.Method = wr.getHttpMethod().name();
            using (PortlessWebResponse response = request.GetPortlessResponse())
            {
                HtmlWebResponseData responseData = new HtmlWebResponseData(
                    GetResponseBody(response),
                    /*response.StatusCode*/ 200,
                    /*response.StatusDescription*/ "200 OK",
                    GetHeaders(response));
                return(new HtmlWebResponse(responseData, wr, 1));
            }
        }
コード例 #4
0
        private async Task AddHeaders(Request request, PortlessWebRequest webRequest)
        {
            foreach (KeyValuePair <string, string> header in request.Headers)
            {
                webRequest.Headers[header.Key] = header.Value;
            }

            string cookies = await(await browser.GetCookiesAsync()).SerializeAsync(request.Url);

            if (!string.IsNullOrWhiteSpace(cookies))
            {
                webRequest.Headers[HttpRequestHeader.Cookie] = cookies;
            }

            if (request.Body != null)
            {
                webRequest.Headers[HttpRequestHeader.ContentLength] = request.Body.Length.ToString();
            }
        }
コード例 #5
0
        public void TestWebSite2()
        {
            string relativePath = @"..\..\..\PortlessWebHost.TestWebSite2";
            string physicalPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath));

            using (WebHost host = new WebHost("/", physicalPath))
            {
                PortlessWebRequest request = host.CreateRequest(new Uri("http://localhost/Account/Login"));
                request.Method = "GET";
                using (WebResponse response = request.GetResponse())
                {
                    using (MemoryStream responseStream = (MemoryStream)response.GetResponseStream())
                    {
                        string responseText = Encoding.GetEncoding(1252).GetString(responseStream.ToArray());
                        responseText.Should().Contain("Web Host Test Page 2");
                    }
                }
            }
        }
コード例 #6
0
        public void TestWebSiteAsyncRequest()
        {
            string relativePath = @"..\..\..\PortlessWebHost.TestWebSite";
            string physicalPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath));

            using (TestAsyncWebHost host = new TestAsyncWebHost("/", physicalPath))
            {
                PortlessWebRequest request = host.CreateRequest(new Uri("http://localhost/AsyncRequest.ashx"));
                request.Method = "GET";
                using (WebResponse response = request.GetResponse())
                {
                    using (MemoryStream responseStream = (MemoryStream)response.GetResponseStream())
                    {
                        string responseText = Encoding.UTF8.GetString(responseStream.ToArray());
                        responseText.Should().Contain("Async test succeeded");
                    }
                }
            }
        }
コード例 #7
0
        public void TestWebSite2WithHttps()
        {
            const string url          = "https://localhost/Account/ConfirmEmail?userId=11&code=success";
            const string relativePath = @"..\..\..\PortlessWebHost.TestWebSite2";
            string       physicalPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath));

            using (WebHost host = new WebHost("/", physicalPath, Protocol.Https))
            {
                PortlessWebRequest request = host.CreateRequest(new Uri(url));
                request.Method = "GET";
                using (WebResponse response = request.GetResponse())
                {
                    using (MemoryStream responseStream = (MemoryStream)response.GetResponseStream())
                    {
                        string responseText = Encoding.GetEncoding(1252).GetString(responseStream.ToArray());
                        responseText.Should().Contain("Thank you for confirming your email.");
                    }
                }
            }
        }
コード例 #8
0
        public async Task HandleRequest(Request request, Func <Error, Response, Task> callback)
        {
            PortlessWebRequest webRequest = host.CreateRequest(request.Url);

            webRequest.Method = request.Method;
            await AddHeaders(request, webRequest);

            AddBody(request, webRequest);
            using (PortlessWebResponse webResponse = webRequest.GetPortlessResponse())
            {
                Response response = new Response();
                response.Url = request.Url;
                AddHeaders(response, webResponse);
                using (Stream stream = webResponse.GetResponseStream())
                {
                    byte[] responseBytes = new byte[stream.Length];
                    stream.Read(responseBytes, 0, (int)stream.Length);
                    response.Body = Encoding.UTF8.GetString(responseBytes);
                }

                await callback(null, response);
            }
        }