コード例 #1
0
        public void FindStreamTest()
        {
            // モックの設定
            var factory = new MockWebClientFactory();
            var mock    = factory.MockClient;

            mock.Setup(client => client.DownloadString("http://livetube.cc/hakusai/somesbroadcast")).Returns("<html>\r\nvar comment_entry_id = \"somestreamid\";\r\n</html>\r\n");
            WebHeaderCollection reqHead = new WebHeaderCollection();

            mock.Setup(client => client.Headers).Returns(reqHead);
            WebHeaderCollection resHead = new WebHeaderCollection();

            resHead.Add("Set-Cookie", "SomeCookie");
            mock.Setup(client => client.ResponseHeaders).Returns(resHead);

            // 実際の呼び出し
            LivetubeClient livetube = new LivetubeClient(factory);

            Assert.True(livetube.Login("hakusai", "password"));

            reqHead.Clear();
            resHead.Clear();
            Assert.AreEqual("somestreamid", livetube.FindStream("http://livetube.cc/hakusai/somesbroadcast"));

            reqHead.Clear();
            resHead.Clear();
            livetube.Logoff();

            // 結果の確認
            Assert.AreEqual("SomeCookie", reqHead["Cookie"]);
            mock.Verify(client => client.DownloadString("http://livetube.cc/logoff"));

            livetube.Dispose();
        }
コード例 #2
0
ファイル: HttpWebClient.cs プロジェクト: coolincy/AOA.Common
        /// <summary>
        /// 获取请求头字节数组
        /// </summary>
        /// <param name="request">POST或GET请求</param>
        /// <returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; AOA.Common.Utility)");

            string headers = string.Format("{0}\r\n", request);

            foreach (string key in requestHeaders)
            {
                headers += string.Format("{0}:{1}\r\n", key, requestHeaders[key]);
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += string.Format("Cookie:{0}\r\n", cookie);
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #3
0
        private void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    //Remove Managed Resources
                    if (webHeaders != null)
                    {
                        webHeaders.Clear();
                    }
                }

                // Remove Unmanaged Resources
                // I.O.W. remove resources that have to be explicitly
                // "Dispose"d or Closed. For an S3 Response, these are:
                // 1. The Response Stream for GET Object requests
                // 2. The HttpResponse object for GET Object requests
                if (responseStream != null)
                {
                    responseStream.Close();
                    responseStream = null;
                }

                if (httpResponse != null)
                {
                    httpResponse.Close();
                    httpResponse = null;
                }
                disposed = true;
            }
        }
コード例 #4
0
        /// <summary>
        /// Copies some properties from the specified <see cref="HttpListenerResponse"/> to
        /// this response.
        /// </summary>
        /// <param name="templateResponse">
        /// A <see cref="HttpListenerResponse"/> to copy.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="templateResponse"/> is <see langword="null"/>.
        /// </exception>
        public void CopyFrom(HttpListenerResponse templateResponse)
        {
            if (templateResponse == null)
            {
                throw new ArgumentNullException("templateResponse");
            }

            if (templateResponse._headers != null)
            {
                if (_headers != null)
                {
                    _headers.Clear();
                }

                Headers.Add(templateResponse._headers);
            }
            else if (_headers != null)
            {
                _headers = null;
            }

            _contentLength     = templateResponse._contentLength;
            _statusCode        = templateResponse._statusCode;
            _statusDescription = templateResponse._statusDescription;
            _keepAlive         = templateResponse._keepAlive;
            _version           = templateResponse._version;
        }
コード例 #5
0
ファイル: HttpProc.cs プロジェクト: halfsilvered/TestCodes
        /// <summary>
        /// 创建HTTP请求
        /// </summary>
        /// <param name="url">URL地址</param>
        /// <returns></returns>
        private HttpWebRequest CreateRequest(string url, string method)
        {
            Uri uri = new Uri(url);

            if (uri.Scheme == "https")
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(this.CheckValidationResult);
            }

            // Set a default policy level for the "http:" and "https" schemes.
            // HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate);
            // HttpWebRequest.DefaultCachePolicy = policy;


            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);


            request.AllowAutoRedirect         = false;
            request.AllowWriteStreamBuffering = false;
            request.Method = method;
            if (proxy != null)
            {
                request.Proxy = proxy;
            }
            request.CookieContainer = cc;
            foreach (string key in requestHeaders.Keys)
            {
                request.Headers.Add(key, requestHeaders[key]);
            }
            requestHeaders.Clear();
            return(request);
        }
コード例 #6
0
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*.*");//*/*
            requestHeaders.Add("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6");
            requestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 LBBROWSER");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #7
0
ファイル: HttpProc_CN.cs プロジェクト: cupid0426/MyProject
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            requestHeaders.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            //requestHeaders.Add("Accept-Encoding", "gzip, deflate");
            requestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #8
0
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #9
0
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent:Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/30.0.015; Profile MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #10
0
ファイル: HttpProc_CN.cs プロジェクト: cupid0426/MyProject
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #11
0
        public void LogoffTest()
        {
            // モックの設定
            var factory = new MockWebClientFactory();
            var mock    = factory.MockClient;
            WebHeaderCollection reqHead = new WebHeaderCollection();

            mock.Setup(client => client.Headers).Returns(reqHead);
            WebHeaderCollection resHead = new WebHeaderCollection();

            resHead.Add("Set-Cookie", "SomeCookie");
            mock.Setup(client => client.ResponseHeaders).Returns(resHead);

            // 実際の呼び出し
            LivetubeClient livetube = new LivetubeClient(factory);

            Assert.True(livetube.Login("hakusai", "password"));

            reqHead.Clear();
            resHead.Clear();
            livetube.Logoff();

            // 結果の確認
            Assert.AreEqual("SomeCookie", reqHead["Cookie"]);
            mock.Verify(client => client.DownloadString("http://livetube.cc/logoff"));

            livetube.Dispose();
        }
コード例 #12
0
        public void LoginTest2_twice()
        {
            // モックの設定
            var factory = new MockWebClientFactory();
            var mock    = factory.MockClient;
            WebHeaderCollection reqHead = new WebHeaderCollection();

            mock.Setup(client => client.Headers).Returns(reqHead);
            WebHeaderCollection resHead = new WebHeaderCollection();

            resHead.Add("Set-Cookie", "SomeCookie");
            mock.Setup(client => client.ResponseHeaders).Returns(resHead);

            // 実際の呼び出し
            LivetubeClient livetube = new LivetubeClient(factory);

            Assert.True(livetube.Login("hakusai", "password"));
            reqHead.Clear();
            resHead.Add("Set-Cookie", "SomeCookie");
            Assert.True(livetube.Login("hakusai", "password"));

            // 結果の確認
            Assert.AreEqual("application/x-www-form-urlencoded", reqHead["Content-Type"]);
            byte[] bytes = Encoding.ASCII.GetBytes("user=hakusai&password=password");
            mock.Verify(client => client.UploadData("http://livetube.cc/login", "POST", bytes));
            mock.Verify(client => client.DownloadString("http://livetube.cc/logoff"));

            livetube.Dispose();
        }
コード例 #13
0
ファイル: HttpProc_CN.cs プロジェクト: cupid0426/MyProject
        ///<summary>
        ///获取请求头字节数组
        ///</summary>
        ///<param name="request">POST或GET请求</param>
        ///<returns>请求头字节数组</returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");

            string headers = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                headers += key + ":" + requestHeaders[key] + "\r\n";
            }

            //有Cookie就带上Cookie
            if (cookie != "")
            {
                headers += "Cookie:" + cookie + "\r\n";
            }

            //空行,请求头结束
            headers += "\r\n";

            strRequestHeaders = headers;
            requestHeaders.Clear();
            return(encoding.GetBytes(headers));
        }
コード例 #14
0
        public void HttpRequestHeader_Clear_Success()
        {
            WebHeaderCollection w = new WebHeaderCollection();

            w.Add("header1", "value1");
            w.Add("header1", "value2");
            w.Clear();
            Assert.Equal(0, w.Count);
        }
コード例 #15
0
        /// 获取网络日期时间
        /// </summary>
        /// <returns></returns>
        public static DateTime GetNetDateTime()
        {
            if (IsSyncTime)
            {
                return(DateTime.Now);
            }
            //IsSyncTime = true;

            WebRequest          request          = null;
            WebResponse         response         = null;
            WebHeaderCollection headerCollection = null;
            string datetime = string.Empty;

            try
            {
                request             = WebRequest.Create("https://www.baidu.com");
                request.Timeout     = 3000;
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = (WebResponse)request.GetResponse();
                headerCollection    = response.Headers;
                foreach (var h in headerCollection.AllKeys)
                {
                    if (h == "Date")
                    {
                        datetime = headerCollection[h];
                    }
                }
                DateTime time = DateTime.Parse(datetime);
                TimeSpan ts   = time - DateTime.Now;
                if (System.Math.Abs(ts.Days) > 0 || System.Math.Abs(ts.Hours) > 0 || System.Math.Abs(ts.Minutes) > 0)
                {
                    IsSyncTime = SyncTime(time);
                }
                else
                {
                    IsSyncTime = true;
                }
                return(time);//DateTime.Parse(datetime);
            }
            catch (Exception) { IsSyncTime = true; return(DateTime.Now); }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (response != null)
                {
                    response.Close();
                }
                if (headerCollection != null)
                {
                    headerCollection.Clear();
                }
            }
        }
コード例 #16
0
ファイル: WebClient.cs プロジェクト: wangmaosheng/jadetools
        private void GetResponseHeader(byte[] buffer, out int startIndex)
        {
            responseHeaders.Clear();
            string       html  = encoding.GetString(buffer);
            StringReader sr    = new StringReader(html);
            int          start = html.IndexOf("\r\n\r\n") + 4;

            strResponseHeaders = html.Substring(0, start);
            if (sr.Peek() > -1)
            {
                string line3 = sr.ReadLine();
                Match  M4    = Regex.Match(line3, "\\d\\d\\d");
                if (M4.Success)
                {
                    statusCode = int.Parse(M4.Value);
                }
            }
            while (sr.Peek() > -1)
            {
                string line2 = sr.ReadLine();
                if (line2 != "")
                {
                    Match M3 = Regex.Match(line2, "([^:]+):(.+)");
                    if (M3.Success)
                    {
                        try
                        {
                            responseHeaders.Add(M3.Groups[1].Value.Trim(), M3.Groups[2].Value.Trim());
                        }
                        catch
                        {
                        }
                        if (M3.Groups[1].Value == "Set-Cookie")
                        {
                            M3     = Regex.Match(M3.Groups[2].Value, "[^=]+=[^;]+");
                            cookie = cookie + M3.Value.Trim() + ";";
                        }
                    }
                    continue;
                }
                if (responseHeaders["Content-Length"] == null && sr.Peek() > -1)
                {
                    line2 = sr.ReadLine();
                    Match M = Regex.Match(line2, "~[0-9a-fA-F]{1,15}");
                    if (M.Success)
                    {
                        int length = int.Parse(M.Value, NumberStyles.AllowHexSpecifier);
                        responseHeaders.Add("Content-Length", length.ToString());
                        strResponseHeaders = strResponseHeaders + M.Value + "\r\n";
                    }
                }
                break;
            }
            sr.Close();
            startIndex = encoding.GetBytes(strResponseHeaders).Length;
        }
コード例 #17
0
 public void CopyFrom(HttpListenerResponse templateResponse)
 {
     headers.Clear();
     headers.Add(templateResponse.headers);
     content_length     = templateResponse.content_length;
     status_code        = templateResponse.status_code;
     status_description = templateResponse.status_description;
     keep_alive         = templateResponse.keep_alive;
     version            = templateResponse.version;
 }
コード例 #18
0
        //获取网络时间
        public static string GetNetDateTime()
        {
            WebRequest          request          = null;
            WebResponse         response         = null;
            WebHeaderCollection headerCollection = null;
            string datetime = string.Empty;

            try
            {
                request             = WebRequest.Create("https://www.baidu.com");
                request.Timeout     = 1000;
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = (WebResponse)request.GetResponse();
                headerCollection    = response.Headers;
                foreach (var h in headerCollection.AllKeys)
                {
                    if (h == "Date")
                    {
                        datetime = headerCollection[h];
                    }
                }
                return(datetime);
            }
            catch (Exception)
            {
                request             = WebRequest.Create("https://www.baidu.com");
                request.Timeout     = 1000;
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = (WebResponse)request.GetResponse();
                headerCollection    = response.Headers;
                foreach (var h in headerCollection.AllKeys)
                {
                    if (h == "Date")
                    {
                        datetime = headerCollection[h];
                    }
                }
                return(datetime);
            }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (response != null)
                {
                    response.Close();
                }
                if (headerCollection != null)
                {
                    headerCollection.Clear();
                }
            }
        }
コード例 #19
0
ファイル: Drrr_Host.cs プロジェクト: osusi1/Ron_BAN
        static void SetReqHeader_Ajax(WebHeaderCollection req_headers, ref string str_Cookie)
        {
            req_headers.Clear();
            req_headers.Add("Host: drrrkari.com");
            req_headers.Add("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
            req_headers.Add("X-Requested-With: XMLHttpRequest");
            req_headers.Add("Origin: http://drrrkari.com");
//			req_headers.Add("Connection: keep-alive");
            req_headers.Add("Referer: http://drrrkari.com/room/");
            req_headers.Add(str_Cookie);
        }
コード例 #20
0
ファイル: Drrr_Host.cs プロジェクト: osusi1/Ron_BAN
        static void SetReqHeader_normal(WebHeaderCollection req_headers, ref string str_Cookie)
        {
            req_headers.Clear();
            req_headers.Add("Host: drrrkari.com");
            req_headers.Add("Content-Type: application/x-www-form-urlencoded");
            req_headers.Add("Origin: http://drrrkari.com");
//			req_headers.Add("Connection: keep-alive");
            req_headers.Add("Referer: http://drrrkari.com/");
            req_headers.Add(str_Cookie);
//			req_headers.Add("Upgrade-Insecure-Requests: 1");
        }
コード例 #21
0
        public void Clear_Success()
        {
            WebHeaderCollection w = new WebHeaderCollection();

            w.Add("Accept", "text/plain");
            w.Add("Content-Length", "123");

            Assert.NotEmpty(w);
            w.Clear();
            Assert.Empty(w);
        }
コード例 #22
0
ファイル: WebClient.cs プロジェクト: windygu/KtvMS
        /// <summary>
        /// 获取请求头部的数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
            string headers2 = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                string text = headers2;
                headers2 = text + key + ":" + requestHeaders[key] + "\r\n";
            }

            if (cookie != "")
            {
                headers2 = headers2 + "Cookie:" + cookie + "\r\n";
            }
            headers2 = (strRequesHeaders = headers2 + "\r\n");
            requestHeaders.Clear();
            return(encoding.GetBytes(headers2));
        }
コード例 #23
0
ファイル: RestClient.cs プロジェクト: xvoices/Exceptionless
        private void Reset()
        {
#if SILVERLIGHT
            ResponseHeaders = new WebHeaderCollection();
#else
            ResponseHeaders.Clear();
#endif
            Error      = null;
            Status     = null;
            StatusCode = null;
            _complete.Reset();
        }
コード例 #24
0
        /// <summary>
        /// Copies properties from the specified <see cref="HttpListenerResponse"/> to this response.
        /// </summary>
        /// <param name="templateResponse">
        /// A <see cref="HttpListenerResponse"/> to copy.
        /// </param>
        /// <exception cref="InvalidOperationException">
        /// The response has already been sent.
        /// </exception>
        /// <exception cref="ObjectDisposedException">
        /// This object is closed.
        /// </exception>
        public void CopyFrom(HttpListenerResponse templateResponse)
        {
            checkDisposedOrHeadersSent();

            _headers.Clear();
            _headers.Add(templateResponse._headers);
            _contentLength     = templateResponse._contentLength;
            _statusCode        = templateResponse._statusCode;
            _statusDescription = templateResponse._statusDescription;
            _keepAlive         = templateResponse._keepAlive;
            _version           = templateResponse._version;
        }
コード例 #25
0
ファイル: LTUtils.cs プロジェクト: liwensong521/mini
        /// <summary>
        /// 获取网络日期时间
        /// </summary>
        /// <returns></returns>
        public static string GetNetDateTime()
        {
            HttpWebRequest      request          = null;
            WebResponse         response         = null;
            WebHeaderCollection headerCollection = null;
            string datetime = string.Empty;

            try
            {
                request = WebRequest.Create("https://www.baidu.com") as HttpWebRequest;

                ServicePointManager.ServerCertificateValidationCallback =
                    delegate(object s, X509Certificate certificate,
                             X509Chain chain, SslPolicyErrors sslPolicyErrors)
                {
                    return(true);
                };

                request.UserAgent = DefaultUserAgent;
                request.Timeout   = 3000;
                response          = (WebResponse)request.GetResponse();
                headerCollection  = response.Headers;
                foreach (var h in headerCollection.AllKeys)
                {
                    if (h == "Date")
                    {
                        datetime = headerCollection[h];
                        break;
                    }
                }
                return(datetime);
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                return(datetime);
            }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (response != null)
                {
                    response.Close();
                }
                if (headerCollection != null)
                {
                    headerCollection.Clear();
                }
            }
        }
コード例 #26
0
        public void PostCommentTest()
        {
            // モックの設定
            var factory = new MockWebClientFactory();
            var mock    = factory.MockClient;

            mock.Setup(client => client.DownloadString("http://livetube.cc/hakusai/somesbroadcast")).Returns("<html>\r\nvar comment_entry_id = \"somestreamid\";\r\n</html>\r\n");
            WebHeaderCollection reqHead = new WebHeaderCollection();

            mock.Setup(client => client.Headers).Returns(reqHead);
            WebHeaderCollection resHead = new WebHeaderCollection();

            resHead.Add("Set-Cookie", "SomeCookie");
            mock.Setup(client => client.ResponseHeaders).Returns(resHead);

            // 実際の呼び出し
            LivetubeClient livetube = new LivetubeClient(factory);

            Assert.True(livetube.Login("hakusai", "password"));

            reqHead.Clear();
            resHead.Clear();
            var streamid = livetube.FindStream("http://livetube.cc/hakusai/somesbroadcast");

            reqHead.Clear();
            resHead.Clear();
            livetube.PostComment(streamid, "hakusai", "コメント");

            // 結果の確認
            Assert.AreEqual("application/x-www-form-urlencoded", reqHead["Content-Type"]);
            Assert.AreEqual("SomeCookie", reqHead["Cookie"]);
            byte[] bytes = Encoding.ASCII.GetBytes("name=hakusai&c=%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88");
            mock.Verify(client => client.UploadData("http://livetube.cc/stream/somestreamid.comments", "POST", bytes));

            reqHead.Clear();
            resHead.Clear();
            livetube.Logoff();

            livetube.Dispose();
        }
コード例 #27
0
ファイル: Http.cs プロジェクト: ttitt/TThaoyueBF3
        /// <summary>
        /// 获取HTTP协议Headers标头之SetCookie
        /// </summary>
        /// <param name="Url">Url地址</param>
        /// <param name="Referer">Referer地址</param>
        public static string GetHttpSetCookie(string Url, string Referer = null)
        {
            HttpWebRequest      req = null;
            HttpWebResponse     res = null;
            WebHeaderCollection headerCollection = null;
            string resHeadersCookie = string.Empty;

            try
            {
                req = (HttpWebRequest)WebRequest.Create(Url);
                req.AllowAutoRedirect = false;
                req.Method            = "GET";
                req.Timeout           = 3000;
                req.UserAgent         = UserAgent;
                req.Accept            = Accept;
                req.ProtocolVersion   = HttpVersion.Version11;
                req.Referer           = Referer == null ? null : Referer;
                req.Proxy             = null;
                res = (HttpWebResponse)req.GetResponse();
                headerCollection = res.Headers;
                if (headerCollection != null)
                {
                    foreach (string h in headerCollection.AllKeys)
                    {
                        if (h == "Set-Cookie")
                        {
                            resHeadersCookie = (headerCollection[h]);
                        }
                    }
                }
                return(resHeadersCookie);
            }
            catch (Exception) { return(resHeadersCookie); }
            finally { if (req != null)
                      {
                          req.Abort();
                      }
                      if (res != null)
                      {
                          res.Close();
                      }
                      if (headerCollection != null)
                      {
                          headerCollection.Clear();
                      }
            }
        }
コード例 #28
0
        /// <summary>
        /// 加载网页形式的书
        /// </summary>
        /// <param name="address"></param>
        private void LoadWebBook(string address)
        {
            WebRequest          request          = null;
            WebResponse         response         = null;
            StreamReader        sreader          = null;
            WebHeaderCollection headerCollection = null;
            string datetime = string.Empty;

            try
            {
                request             = WebRequest.Create(address);
                request.Timeout     = 3000;
                request.Credentials = CredentialCache.DefaultCredentials;
                WebProxy myProxy = new WebProxy();
                request.Proxy = myProxy;
                response      = (WebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();
                sreader = new StreamReader(stream, Encoding.UTF8);
                string strReader = sreader.ReadToEnd();
                richTextBox1.Text = strReader;
            }
            catch (Exception ex) { }
            finally
            {
                if (request != null)
                {
                    request.Abort(); request = null;
                }
                if (response != null)
                {
                    response.Close(); response = null;
                }
                if (headerCollection != null)
                {
                    headerCollection.Clear(); headerCollection = null;
                }
                if (sreader != null)
                {
                    sreader.Close();
                    sreader = null;
                }
            }
        }
コード例 #29
0
        /// <summary>
        /// 生成Http请求消息头
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        private static byte[] GetRequestHeaders(Uri uri, HttpVerb method)
        {
            WebHeaderCollection webheaders = new WebHeaderCollection();

            webheaders.Add("Host", uri.Host);
            webheaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            webheaders.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
            webheaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0");

            StringBuilder header = new StringBuilder();

            header.AppendFormat("{0} {1} HTTP/1.1\r\n", method, uri.PathAndQuery);
            foreach (string key in webheaders)
            {
                header.AppendFormat("{0}:{1}\r\n", key, webheaders[key]);
            }
            header.Append("\r\n");
            webheaders.Clear();
            return(Encoding.UTF8.GetBytes(header.ToString()));
        }
コード例 #30
0
ファイル: WebClient.cs プロジェクト: windygu/MusicGarden
        private byte[] GetRequestHeaders(string request)
        {
            requestHeaders.Add("Accept", "*/*");
            requestHeaders.Add("Accept-Language", "zh-cn");
            requestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36");
            string headers2 = request + "\r\n";

            foreach (string key in requestHeaders)
            {
                string text = headers2;
                headers2 = text + key + ":" + requestHeaders[key] + "\r\n";
            }
            if (cookie != "")
            {
                headers2 = headers2 + "Cookie:" + cookie + "\r\n";
            }
            headers2 = (strRequestHeaders = headers2 + "\r\n");
            requestHeaders.Clear();
            return(encoding.GetBytes(headers2));
        }
コード例 #31
0
 public void HttpRequestHeader_Clear_Success()
 {
     WebHeaderCollection w = new WebHeaderCollection();
     w.Add("header1", "value1");
     w.Add("header1", "value2");
     w.Clear();
     Assert.Equal(0, w.Count);
 }
コード例 #32
0
        public void Clear_Success()
        {
            WebHeaderCollection w = new WebHeaderCollection();
            w.Add("Accept", "text/plain");
            w.Add("Content-Length", "123");

            Assert.NotEmpty(w);
            w.Clear();
            Assert.Empty(w);
        }