Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public void GetTest()
        {
            Assert.IsNull(Httpdoer.Get("www.baidu.com", new { id = 1 }).Send().Exception);
            Assert.IsNull(Httpdoer.Get("www.baidu.com/s").Send().Exception);
            var req = Httpdoer.Get("www.baidu.com", new { id = 1 }, new { Authorization = "xxxx" });

            Assert.AreEqual("http://www.baidu.com?id=1", req.ToString("q"));
            Assert.AreEqual("xxxx", req.Headers["Authorization"]);
            Assert.IsNull(req.Send().Exception);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        public void 测试同步模式下的Cookie_None()
        {
            var www = new Httpdoer("http://baidu.com/");

            www.CookieMode = HttpCookieMode.None;
            var res = www.Send();

            Assert.IsTrue(HttpRequest.LocalCookies.Count == 0);
            Assert.IsTrue(www.Cookies == null);
            Assert.IsTrue(res.Cookies == null);
        }
Ejemplo n.º 6
0
        public static string Translate(string text)
        {
            var www = new Httpdoer("https://api.datamarket.azure.com");

            www.Method = HttpRequestMethod.Get;
            www.Path   = "Bing/MicrosoftTranslator/v1/Translate";
            www.Query.AddModel(new { Text = $"'{text}'", To = "'zh-CHS'" });
            www.Headers["Authorization"] = AUTH_TOKEN;

            return(GetText(www.GetString()));
        }
Ejemplo n.º 7
0
        public void 测试同步模式下的Cookie_ApplicationCache()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.ApplicationCache;
            var res = www.Send();

            Assert.IsTrue(www.Cookies == HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count > 0);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
        public void 测试同步模式下的Cookie_UserCustom()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.UserCustom;
            var res = www.Send();

            Assert.IsTrue(HttpRequest.LocalCookies.Count == 0);
            Assert.IsTrue(www.Cookies != HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count > 0);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
Ejemplo n.º 10
0
        public void 测试自定义ContentType()
        {
            var www = new Httpdoer("http://www.baidu.com");

            www.Path             = "s";
            www.Method           = HttpRequestMethod.Put;
            www.Body.ContentType = new HttpContentType("aaabbbccc", null, null, HttpBodyParsers.Stream);
            www.Body.Wirte(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            var str = www.GetString();

            Trace.WriteLine(www.Response.RequestData.Raw);
            Assert.IsNull(www.Exception);
        }
Ejemplo n.º 11
0
        public void 测试Path参数()
        {
            var www = new Httpdoer("http://www.baidu.com/{id}");

            www.Params["id"] = 123;
            var url = www.ToString("q");

            Assert.AreEqual("http://www.baidu.com/123", url);

            www = new Httpdoer("http://www.baidu.com/{id}");
            www.Params["id"] = 123;
            www.Params.Add("id", "456");
            url = www.ToString("q");
            Assert.AreEqual("http://www.baidu.com/123,456", url);
        }
Ejemplo n.º 12
0
        static void Main(string[] args)
        {
            var www = new Httpdoer("www.baidu.com");

            www.Body.ContentType = HttpContentType.Json;
            www.Method           = HttpRequestMethod.Post;
            www.Body.Wirte(Encoding.UTF8.GetBytes("{'a':1}"));
            // www.Body.AddModel(new { a = 1, b = "fdsfdas", c = new { d = true, e = DateTime.Now, f = new[] { 1, 2, 3, 4, 5 } } });
            var str = www.GetString();

            Console.WriteLine("-----------------------------------");
            Console.WriteLine(www.Response.RequestData.Raw);
            Console.WriteLine("-----------------------------------");
            Console.WriteLine(str);
        }
Ejemplo n.º 13
0
        public void POST对象参数测试()
        {
            var www = new Httpdoer("www.baidu.com");

            www.Method = HttpRequestMethod.Post;
            www.Body.AddModel(new { user = new { id = 1, name = "blqw", sex = true } });
            www.Query.ObjectEncodeMode = ObjectEncodeMode.Default;
            Assert.AreEqual("user.id=1&user.name=blqw&user.sex=true", www.Body.ToString());
            www.Query.ObjectEncodeMode = ObjectEncodeMode.JQuery;
            Assert.AreEqual("user[id]=1&user[name]=blqw&user[sex]=true", Uri.UnescapeDataString(www.Body.ToString()));
            www.Query.ObjectEncodeMode = ObjectEncodeMode.Json;
            Assert.AreEqual("user="******"{\"id\":1,\"name\":\"blqw\",\"sex\":true}"), www.Body.ToString());
            www.Query.ObjectEncodeMode = ObjectEncodeMode.NameOnly;
            Assert.AreEqual("id=1&name=blqw&sex=true", www.Body.ToString());
        }
Ejemplo n.º 14
0
        //写入参数
        private void WriteParams(Httpdoer doer)
        {
            if (tabRequestData.SelectedTab == pageCustomRequestData)
            {
                doer.Body.Wirte((doer.Body.ContentType.Charset ?? Encoding.UTF8).GetBytes(txtCustomRequestData.Text));
            }
            else
            {
                foreach (DataGridViewRow row in gridParams.Rows)
                {
                    if (row.IsNewRow)
                    {
                        continue;
                    }
                    var name     = row.Cells[colParamsName.Name].Value as string ?? "";
                    var location = row.Cells[colParamsLocation.Name].Value as string;
                    var value    = row.Cells[colParamsValue.Name].Value as string;
                    switch (location)
                    {
                    case null:
                    case "Auto":
                        doer.Params.Add(name, value);
                        break;

                    case "Query":
                        doer.Query.Add(name, value);
                        break;

                    case "Body":
                        doer.Body.Add(name, value);
                        break;

                    case "Header":
                        doer.Headers.Add(name, value);
                        break;

                    case "Path":
                        doer.PathParams.Add(name, value);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Ejemplo n.º 15
0
        public void POST数组参数测试()
        {
            var www = new Httpdoer("www.baidu.com");

            www.Method = HttpRequestMethod.Post;
            www.Body.AddModel(new { a = new[] { 1, 2, 3 } });
            www.Query.ArrayEncodeMode = ArrayEncodeMode.Default;
            Assert.AreEqual("a=1&a=2&a=3", www.Body.ToString());
            www.Query.ArrayEncodeMode = ArrayEncodeMode.Asp;
            Assert.AreEqual("a[0]=1&a[1]=2&a[2]=3", Uri.UnescapeDataString(www.Body.ToString()));
            www.Query.ArrayEncodeMode = ArrayEncodeMode.JQuery;
            Assert.AreEqual("a[]=1&a[]=2&a[]=3", Uri.UnescapeDataString(www.Body.ToString()));
            www.Query.ArrayEncodeMode = ArrayEncodeMode.Json;
            Assert.AreEqual("a=" + Uri.EscapeDataString("[1,2,3]"), www.Body.ToString());
            www.Query.ArrayEncodeMode = ArrayEncodeMode.Merge;
            Assert.AreEqual("a=1,2,3", www.Body.ToString());
        }
Ejemplo n.º 16
0
        public void 基本功能测试()
        {
            var www = new Httpdoer("https://api.datamarket.azure.com");

            www.Method = HttpRequestMethod.Get;
            www.Path   = "Bing/MicrosoftTranslator/v1/Translate";
            www.Query.AddModel(new
            {
                Text = "'hello world'",
                To   = "'zh-CHS'"
            });

            www.Headers["Authorization"] = AUTH_TOKEN;

            var str = www.GetString();

            Assert.AreEqual("世界您好", GetText(str));
        }
Ejemplo n.º 17
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);
        }
Ejemplo n.º 18
0
        public void 测试生成Url()
        {
            var www = new Httpdoer("www.baidu.com");

            www.Path = "s";
            Assert.AreEqual("http://www.baidu.com/s", www.ToString("q"));


            www.Path = "/s";
            Assert.AreEqual("http://www.baidu.com/s", www.ToString("q"));

            www.Query.Add("id", "1");
            Assert.AreEqual("http://www.baidu.com/s?id=1", www.ToString("q"));

            www.Path = "/s/";
            Assert.AreEqual("http://www.baidu.com/s/?id=1", www.ToString("q"));


            www.Path = "/s/?id=2";
            Assert.AreEqual("http://www.baidu.com/s/?id=2&id=1", www.ToString("q"));

            www      = new Httpdoer("www.baidu.com?id=3");
            www.Path = "s?id=2";
            Assert.AreEqual("http://www.baidu.com/s?id=2", www.ToString("q"));

            www.Query.Add("id", "1");
            Assert.AreEqual("http://www.baidu.com/s?id=2&id=1", www.ToString("q"));

            www.Path = "?id=2";
            Assert.AreEqual("http://www.baidu.com/?id=2&id=1", www.ToString("q"));

            www.Path = "&id=2";
            Assert.AreEqual("http://www.baidu.com/?id=3&id=2&id=1", www.ToString("q"));

            www      = new Httpdoer("www.baidu.com/a?id=3");
            www.Path = "s?id=2";
            Assert.AreEqual("http://www.baidu.com/s?id=2", www.ToString("q"));

            www      = new Httpdoer("www.baidu.com/a/b");
            www.Path = "c";
            Assert.AreEqual("http://www.baidu.com/a/c", www.ToString("q"));
        }
Ejemplo n.º 19
0
        public void 测试同步模式下的Cookie_CustomOrCache()
        {
            var www = new Httpdoer("http://www.baidu.com/");

            www.CookieMode = HttpCookieMode.UserCustom;
            var res = www.Send();

            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 = www.Send();
            Assert.IsTrue(www.Cookies != HttpRequest.LocalCookies);
            Assert.IsTrue(www.Cookies.Count == count + 1);
            Assert.IsTrue(res.Cookies.Count > 0);
        }
Ejemplo n.º 20
0
        public void 测试头编码()
        {
            var model = new
            {
                OwnerId      = 510789,
                BrokerKId    = 49005,
                BrokerName   = "肖佳",
                Phone        = "15012345600",
                EarnestMoney = 15200,
                HouseList    = new[] {
                    new { VillageName = "凤凰城", Building = "1幢", HouseId = "12" }
                }
            };

            var www = new Httpdoer("www.baidu.com");

            //www.Timeout = new TimeSpan(0,0,1);
            www.Headers.KeepAlive = true;
            www.Cookies.Add(new Uri("http://www.baidu.com"), new Cookie("sessionid", "123456789"));
            www.Body.AddModel(model);
            www.Method           = HttpRequestMethod.Post;
            www.Body.ContentType = HttpContentType.Json;
            www.GetString();
        }
Ejemplo n.º 21
0
        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();
        }