예제 #1
0
        public async Task 测试302跳转()
        {
            var www = new Httpdoer("http://i.baidu.com/");

            www.AutoRedirect = false;
            var result = www.Send();

            Assert.AreEqual(HttpStatusCode.Redirect, result.StatusCode);

            www = new Httpdoer("http://i.baidu.com/");
            www.AutoRedirect = true;
            result           = www.Send();
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);

            www = new Httpdoer("http://i.baidu.com/");
            www.AutoRedirect = false;
            result           = await www.SendAsync();

            Assert.AreEqual(HttpStatusCode.Redirect, result.StatusCode);

            www = new Httpdoer("http://i.baidu.com/");
            www.AutoRedirect = true;
            result           = await www.SendAsync();

            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
예제 #2
0
        public async Task 测试异步模式下的Cookie_ApplicationCache()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.ApplicationCache;
            var res = await www.SendAsync();

            Assert.IsTrue(www.Cookies == HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count > 0);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
예제 #3
0
        public async Task 测试异步模式下的Cookie_None()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.None;
            var res = await www.SendAsync();

            Assert.IsTrue(HttpRequest.LocalCookies.Count == 0);
            Assert.IsTrue(www.Cookies == null);
            Assert.IsTrue(res.Cookies == null);
        }
예제 #4
0
        public async Task 测试异步模式下的Cookie_UserCustom()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.UserCustom;
            var res = await www.SendAsync();

            Assert.IsTrue(HttpRequest.LocalCookies.Count == 0);
            Assert.IsTrue(www.Cookies != HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count > 0);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
예제 #5
0
        public async Task  设置Method()
        {
            var www    = new Httpdoer("www.baidu.com");
            var result = www.Send();

            Assert.IsNull(result.Exception);

            www    = new Httpdoer("www.baidu.com");
            result = await www.SendAsync();

            Assert.IsNull(result.Exception);

            www = new Httpdoer("www.baidu.com");
            www.Body.Add("name", "value");
            Assert.AreEqual(HttpRequestMethod.Post, www.Method);
            Assert.AreEqual("POST", www.HttpMethod);
            Assert.IsNotNull(www.Body.ToString());
            Assert.AreEqual(HttpContentType.Form, www.Body.ContentType);
        }
예제 #6
0
        public async Task 测试异步模式下的Cookie_CustomOrCache()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.UserCustom;
            var res = await www.SendAsync();

            Assert.IsTrue(HttpRequest.LocalCookies.Count == 0);
            Assert.IsTrue(www.Cookies != HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count > 0);
            Assert.IsTrue(res.Cookies.Count > 0);
            var count = www.Cookies.Count;

            www            = new Httpdoer("http://www.baidu.com/");
            www.CookieMode = HttpCookieMode.CustomOrCache;
            HttpRequest.LocalCookies.Add(new Cookie("aa", "11", "/", "www.baidu.com"));
            res = await www.SendAsync();

            Assert.IsTrue(www.Cookies != HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count == count + 1);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
예제 #7
0
파일: Form1.cs 프로젝트: blqw/blqw.Httpdoer
        protected virtual async Task SendRequest()
        {
            await Task.Delay(1);

            rtxtLogs.Clear();
            var request = new Httpdoer(txtURL.Text)
            {
                UseCookies = true,
                Timeout    = TimeSpan.FromSeconds(decimal.ToDouble(numTimeout.Value)),
                Proxy      = null,
            };

            request.Trackings.Add(new BuibuiTracking());
            //设置Cookie
            if (ckbKeepCookie.Checked)
            {
                request.Cookies = _cookies;
            }
            request.Headers.KeepAlive = ckbKeepAlive.Checked;
            request.Logger.Listeners.Add(new BuibuiListener(rtxtLogs));
            request.HttpMethod = cbbHttpMethod.Text;
            if (!string.IsNullOrWhiteSpace(cbbContentType.Text))
            {
                request.Body.ContentType = cbbContentType.Text;
            }
            //写入参数
            WriteParams(request);

            //var response = request.Send();
            var response = await request.SendAsync();

            //返回正文
            rtxtResponseBody.Tag = response?.Body?.ResponseBody;
            //设置编码
            var encoding = response?.Body?.ContentType.Charset?.WebName;

            if (encoding == cbbEncoding.Text)
            {
                cbbEncoding_SelectedIndexChanged(cbbEncoding, EventArgs.Empty);
            }
            else
            {
                cbbEncoding.Text = response?.Body?.ContentType.Charset?.WebName;
            }

            txtRequestRaw.Text  = response?.RequestData.Raw;
            txtResponseRaw.Text = response?.ResponseRaw;
            //显示视图
            if (response?.Body?.ContentType.Format?.ToLowerInvariant() == "json")
            {
                ShowJson();
            }
            else
            {
                ShowView();
            }
            //返回头
            ShowResponseHeaders(response);
            //显示Cookie
            ShowResponseCookie(response);
            if (response.Cookies != null)
            {
                _cookies.Add(response.Cookies);
            }

            if (response.Exception != null)
            {
                request.Error(response.Exception);
                SaveHistory();
                throw new NotImplementedException(response.Exception.Message, response.Exception);
            }
            SaveHistory();
        }