public override WebResponse EndGetResponse(IAsyncResult asyncResult)
        {
            if (asyncResult == null)
            {
                throw new ArgumentNullException("asyncResult");
            }
            if (!asyncResult.IsCompleted)
            {
                asyncResult.AsyncWaitHandle.WaitOne();
            }
            AsyncResult         async = (AsyncResult)asyncResult;
            GetResponseCallback cb    = (GetResponseCallback)async.AsyncDelegate;

#if SSHARP
            FileWebResponse webResponse = (FileWebResponse)cb.EndInvokeEx(asyncResult);
#else
            FileWebResponse webResponse = (FileWebResponse)cb.EndInvoke(asyncResult);
#endif
            asyncResponding = false;
            if (webResponse.HasError)
            {
                throw webResponse.Error;
            }
            return(webResponse);
        }
Example #2
0
        public override Uri GetUserRequest(Uri input)
        {
            // Create a request for the local filepath (ex. C:/Users/joxx01812/source/repos/sqlFile.csv).
            FileWebRequest request = (FileWebRequest)FileWebRequest.Create(input);

            // Get the response.
            FileWebResponse response = (FileWebResponse)request.GetResponse();

            // Get the stream containing content returned by the server.
            // The using block ensures the stream is automatically closed.
            using (Stream dataStream = response.GetResponseStream())
            {
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);

                // Read the content.
                string responseFromUserInput = reader.ReadToEnd();

                // Display the content.
                Console.WriteLine(responseFromUserInput);

                // CleanUp streams.
                reader.Close();
                dataStream.Close();
            }
            // Close the response.
            response.Close();
            return(input);
        }
        private WebResponse GetResponseInternal()
        {
            if (webResponse != null)
            {
                return(webResponse);
            }
            lock (this)
            {
                if (requesting)
                {
                    requestEndEvent = new AutoResetEvent(false);
                }
            }
            if (requestEndEvent != null)
            {
                requestEndEvent.WaitOne();
            }
            FileStream fileStream = null;

            try
            {
                fileStream       = new FileWebStream(this, FileMode.Open, FileAccess.Read, FileShare.Read);
                this.webResponse = new FileWebResponse(this.uri, fileStream);
            }
            catch (Exception ex)
            {
                this.webResponse = new FileWebResponse(this.uri, new WebException(ex.Message, ex));
            }
            return(this.webResponse);
        }
        public void ContentType()
        {
            FileWebRequest req = (FileWebRequest)WebRequest.Create(_tempFileUri);

            req.Method      = "PUT";
            req.ContentType = "image/png";
            using (Stream s = req.GetRequestStream())
            {
                s.WriteByte(72);
                s.WriteByte(110);
                s.WriteByte(80);
                s.Flush();
            }
            req = (FileWebRequest)WebRequest.Create(_tempFileUri);
            using (FileWebResponse resp = (FileWebResponse)req.GetResponse())
            {
                Assert.AreEqual("application/octet-stream", resp.ContentType, "#1");
                Assert.AreEqual(2, resp.Headers.Count, "#2");
                Assert.AreEqual("Content-Type", resp.Headers.Keys [1], "#3");
                Assert.AreEqual("application/octet-stream", resp.Headers.Get(1), "#4");
                resp.Headers.Clear();
                Assert.AreEqual("application/octet-stream", resp.ContentType, "#5");
                Assert.AreEqual(0, resp.Headers.Count, "#6");
            }
        }
    private static void RespCallback(IAsyncResult ar)
    {
        // State of request is asynchronous.
        RequestDeclare requestDeclare = (RequestDeclare)ar.AsyncState;

        FileWebRequest myFileWebRequest = requestDeclare.myFileWebRequest;

        // End the Asynchronus request by calling the 'EndGetResponse()' method.

        FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.EndGetResponse(ar);

        // Reade the response into Stream.
        StreamReader streamReader = new StreamReader(myFileWebResponse.GetResponseStream());

        Char[] readBuffer = new Char[256];

        int count = streamReader.Read(readBuffer, 0, 256);

        Console.WriteLine("The contents of the file are :\n");

        while (count > 0)
        {
            String str = new String(readBuffer, 0, count);
            Console.WriteLine(str);
            count = streamReader.Read(readBuffer, 0, 256);
        }

        streamReader.Close();
        // Release the response object resources.
        myFileWebResponse.Close();
        allDone.Set();
        Console.WriteLine("File reading is over.");
    }
        /// <summary>
        /// Formira webResponse na osnovu prosledjeno web response-a
        /// </summary>
        /// <param name="response"></param>
        public webResponse(WebResponse response)
        {
            String       __typeString = "null";
            responseType __type       = responseType.nullResponse;

            _response = response;
            if (response != null)
            {
                __typeString = response.GetType().Name;
                __type       = responseType.HttpWebResponse;

                if (!Enum.TryParse <responseType>(__typeString, out __type))
                {
                    __type = responseType.WebResponse;
                }
            }

            type    = __type;
            headers = new List <webHeader>();

            if (response != null)
            {
                foreach (string key in response.Headers.AllKeys)
                {
                    headers.Add(new webHeader(key, response.Headers[key]));
                }

                responseUrl = response.ResponseUri.OriginalString;
                contentType = response.ContentType;

                switch (type)
                {
                case responseType.PackWebResponse:
                    break;

                case responseType.FtpWebResponse:
                    break;

                case responseType.FileWebResponse:
                    FileWebResponse fileRes = response as FileWebResponse;
                    break;

                case responseType.HttpWebResponse:
                    HttpWebResponse httpRes = response as HttpWebResponse;
                    charset    = httpRes.CharacterSet;
                    encoding   = httpRes.ContentEncoding;
                    statusCode = httpRes.StatusCode.ToString();
                    statusDesc = httpRes.StatusDescription;
                    cookies    = new List <Cookie>();
                    foreach (Cookie ck in httpRes.Cookies)
                    {
                        cookies.Add(ck);
                    }
                    method         = httpRes.Method;
                    server         = httpRes.Server;
                    responseDomain = httpRes.ResponseUri.DnsSafeHost;
                    break;
                }
            }
        }
        public void ContentLength()
        {
            FileWebRequest req = (FileWebRequest)WebRequest.Create(_tempFileUri);

            req.Method        = "PUT";
            req.ContentLength = 100;
            using (Stream s = req.GetRequestStream())
            {
                s.WriteByte(72);
                s.WriteByte(110);
                s.WriteByte(80);
                s.Flush();
            }
            req = (FileWebRequest)WebRequest.Create(_tempFileUri);
            using (FileWebResponse resp = (FileWebResponse)req.GetResponse())
            {
                Assert.AreEqual(3, resp.ContentLength, "#1");
                Assert.AreEqual(2, resp.Headers.Count, "#2");
                Assert.AreEqual("Content-Length", resp.Headers.Keys [0], "#3");
                Assert.AreEqual("3", resp.Headers.Get(0), "#4");
                resp.Headers.Clear();
                Assert.AreEqual(3, resp.ContentLength, "#5");
                Assert.AreEqual(0, resp.Headers.Count, "#6");
            }
        }
Example #8
0
        public void GetResponse_File_Exists()
        {
            Stream s = File.Create(_tempFile);

            s.Close();
            FileWebRequest  req   = (FileWebRequest)WebRequest.Create(_tempFileUri);
            FileWebResponse respA = null;
            FileWebResponse respB = null;

            try {
                respA = req.GetResponse() as FileWebResponse;
                Assert.IsNotNull(respA, "#1");
                respB = req.GetResponse() as FileWebResponse;
                Assert.IsNotNull(respB, "#2");
                Assert.AreSame(respA, respB, "#3");
            } finally {
                if (respA != null)
                {
                    respA.Close();
                }
                if (respB != null)
                {
                    respB.Close();
                }
            }
        }
Example #9
0
        private static bool makeFileRequest(string fileName)
        {
            bool requestOk = false;

            try
            {
                Uri myUrl = new Uri("file://" + fileName);

                // Create a FileWebRequest object using the passed URI.
                FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(myUrl);

                // Get the FileWebResponse object.
                myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();

                requestOk = true;
            }
            catch (WebException e)
            {
                Console.WriteLine("WebException: " + e.Message);
            }
            catch (UriFormatException e)
            {
                Console.WriteLine("UriFormatWebException: " + e.Message);
            }

            return(requestOk);
        }
// <Snippet1>
    public static void GetPage(String url)
    {
        try
        {
            Uri fileUrl = new Uri("file://" + url);
            // Create a 'FileWebrequest' object with the specified Uri .
            FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(fileUrl);
            // Send the 'fileWebRequest' and wait for response.
            FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();
            // Display all Headers present in the response received from the Uri.
            Console.WriteLine("\r\nThe following headers were received in the response:");
            // Display each header and the key of the response object.
            for (int i = 0; i < myFileWebResponse.Headers.Count; ++i)
            {
                Console.WriteLine("\nHeader Name:{0}, Header value :{1}", myFileWebResponse.Headers.Keys[i],
                                  myFileWebResponse.Headers[i]);
            }
            myFileWebResponse.Close();
        }
        catch (WebException e)
        {
            Console.WriteLine("\r\nWebException thrown.The Reason for failure is : {0}", e.Status);
        }
        catch (Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
        }
    }
Example #11
0
// <Snippet1>
    public static void GetPage(String url)
    {
        try
        {
            Uri fileUrl = new Uri("file://" + url);

            // Create a 'FileWebrequest' object with the specified Uri .
            FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(fileUrl);

            // Send the 'fileWebRequest' and wait for response.
            FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();

            Console.WriteLine("\nThe Uri of the file system resource that provided the response is :\n{0}\n\n", myFileWebResponse.ResponseUri);

            // Release resources of response object.
            myFileWebResponse.Close();
        }
        catch (WebException e)
        {
            Console.WriteLine("\r\nWebException thrown.The Reason for failure is : {0}", e.Status);
        }
        catch (Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
        }
    }
Example #12
0
        protected override WebResponse GetWebResponse(WebRequest request)
        {
            WebResponse     response    = base.GetWebResponse(request);
            FileWebResponse webResponse = response as FileWebResponse;

            if (webResponse == null)
            {
                return(response);
            }

            return(new AntFileWebResponse(webResponse));
        }
Example #13
0
        }//end ProcessTable

        public void ProcessList(Uri url, String listType, int optionList)
        {

            //ignore bad cert code
            IgnoreBadCertificates();

            //code to allow program with work with different authentication schemes
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            String listTypeEnd = listType + "/";
            //WebRequest http = HttpWebRequest.Create(url);
            FileWebRequest http = (FileWebRequest)WebRequest.Create(url);
            //HttpWebResponse response = (HttpWebResponse)http.GetResponse();
            FileWebResponse response = (FileWebResponse)http.GetResponse();
            Stream istream = response.GetResponseStream();
            ParseHTML parse = new ParseHTML(istream);
            StringBuilder buffer = new StringBuilder();
            bool capture = false;
            Advance(parse, listType, optionList);
            int ch;
            while ((ch = parse.Read()) != -1)
            {
                if (ch == 0)
                {
                    HTMLTag tag = parse.Tag;
                    if (String.Compare(tag.Name, "li", true) == 0)
                    {
                        if (buffer.Length > 0)
                            ProcessItem(buffer.ToString());
                        buffer.Length = 0;
                        capture = true;
                    }
                    else if (String.Compare(tag.Name, "/li", true) == 0)
                    {
                        // Console.WriteLine(buffer.ToString());  //creates a double listing of each list item, might be left over debugging code
                        ProcessItem(buffer.ToString());
                        buffer.Length = 0;
                        capture = false;
                    }
                    else if (String.Compare(tag.Name, listTypeEnd, true) == 0)
                    {
                        break;
                    }
                }
                else
                {
                    if (capture)
                        buffer.Append((char)ch);
                }
            }
        }//end ProcessList
Example #14
0
        private XmlDocument getUpdateFile(string updateUrl)
        {
            XmlDocument Winkle_XMLdoc = null;

            if (updateUrl.StartsWith("file", true, System.Globalization.CultureInfo.CurrentCulture))
            {
                FileWebRequest  Winkle_Request;
                FileWebResponse Winkle_Response = null;

                try
                {
                    Winkle_Request = (FileWebRequest)WebRequest.Create(string.Format(updateUrl));
                    //Winkle_Request.UserAgent = @"Winkle automatic update system " + winkleVersion;
                    Winkle_Response = (FileWebResponse)Winkle_Request.GetResponse();
                    Winkle_XMLdoc   = new XmlDocument();
                    Winkle_XMLdoc.Load(Winkle_Response.GetResponseStream());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                if (Winkle_Response != null)
                {
                    Winkle_Response.Close();
                }
            }
            else
            {
                HttpWebRequest  Winkle_Request;
                HttpWebResponse Winkle_Response = null;

                try
                {
                    Winkle_Request           = (HttpWebRequest)WebRequest.Create(string.Format(updateUrl));
                    Winkle_Request.UserAgent = @"Winkle automatic update system " + winkleVersion;
                    Winkle_Response          = (HttpWebResponse)Winkle_Request.GetResponse();
                    Winkle_XMLdoc            = new XmlDocument();
                    Winkle_XMLdoc.Load(Winkle_Response.GetResponseStream());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                if (Winkle_Response != null)
                {
                    Winkle_Response.Close();
                }
            }

            return(Winkle_XMLdoc);
        }
Example #15
0
        private bool UrlCheck(string strUrl)
        {
            HttpWebRequest  webRequest;
            HttpWebResponse webResponse = null;
            FileWebRequest  fileRequest;
            FileWebResponse fileResponse = null;
            bool            isFile       = false;

            try
            {
                isFile = (HttpWebRequest.Create(strUrl) is FileWebRequest);

                if (isFile)
                {
                    fileRequest  = (FileWebRequest)FileWebRequest.Create(strUrl);
                    fileResponse = (FileWebResponse)fileRequest.GetResponse();
                    if (fileResponse == null)
                    {
                        return(false);
                    }
                    return(true);
                }
                else
                {
                    webRequest  = (HttpWebRequest)HttpWebRequest.Create(strUrl);
                    webResponse = (HttpWebResponse)webRequest.GetResponse();
                    if (webResponse == null)
                    {
                        return(false);
                    }
                    return(webResponse.StatusCode == HttpStatusCode.OK);
                }
            }
            catch
            {
                if (fileResponse != null)
                {
                    fileResponse.Close();
                }

                if (webResponse != null)
                {
                    webResponse.Close();
                }

                return(false);
            }
        }
        public void ResponseUri()
        {
            FileWebRequest req = (FileWebRequest)WebRequest.Create(_tempFileUri);

            req.Method      = "PUT";
            req.ContentType = "image/png";
            using (Stream s = req.GetRequestStream()) {
                s.WriteByte(72);
                s.WriteByte(110);
                s.WriteByte(80);
                s.Flush();
            }
            req = (FileWebRequest)WebRequest.Create(_tempFileUri);
            using (FileWebResponse resp = (FileWebResponse)req.GetResponse()) {
                Assert.AreEqual(_tempFileUri, resp.ResponseUri);
            }
        }
    public static void GetPage(String url)
    {
        try
        {
// <Snippet1>
            Uri fileUrl = new Uri("file://" + url);
            // Create a 'FileWebrequest' object with the specified Uri.
            FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(fileUrl);
            // Send the 'FileWebRequest' object and wait for response.
            FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();

            // Get the stream object associated with the response object.
            Stream receiveStream = myFileWebResponse.GetResponseStream();

            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            // Pipe the stream to a higher level stream reader with the required encoding format.
            StreamReader readStream = new StreamReader(receiveStream, encode);
            Console.WriteLine("\r\nResponse stream received");

            Char[] read = new Char[256];
            // Read 256 characters at a time.
            int count = readStream.Read(read, 0, 256);
            Console.WriteLine("File Data...\r\n");
            while (count > 0)
            {
                // Dump the 256 characters on a string and display the string onto the console.
                String str = new String(read, 0, count);
                Console.Write(str);
                count = readStream.Read(read, 0, 256);
            }
            Console.WriteLine("");
            // Release resources of stream object.
            readStream.Close();
            // Release resources of response object.
            myFileWebResponse.Close();
// </Snippet1>
        }
        catch (WebException e)
        {
            Console.WriteLine("\r\nWebException thrown. The Reason for failure is : {0}", e.Status);
        }
        catch (Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
        }
    }
Example #18
0
        public static void Test_WebRequest_02(string url)
        {
            // create HttpWebRequest or FileWebRequest
            WebRequest req = WebRequest.Create(url);

            _tr.WriteLine("Test_WebRequest_02");
            _tr.WriteLine("  url : \"{0}\"", url);
            _tr.WriteLine("  WebRequest.Create(url) : \"{0}\"", req);
            using (WebResponse response = req.GetResponse())
            {
                _tr.WriteLine("  WebRequest.GetResponse() : \"{0}\"", response);
                _tr.WriteLine("    ContentLength   : {0}", response.ContentLength);
                _tr.WriteLine("    ContentType     : \"{0}\"", response.ContentType);
                _tr.WriteLine("    ResponseUri     : \"{0}\"", response.ResponseUri);
                _tr.WriteLine("    Headers         :  \"{0}\"", response.Headers.GetType());
                foreach (string header in response.Headers)
                {
                    _tr.WriteLine("      {0} = {1}", header, response.Headers[header]);
                }
                if (response is HttpWebResponse)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                    _tr.WriteLine("  HttpWebResponse :");
                    _tr.WriteLine("    CharacterSet      : \"{0}\"", httpResponse.CharacterSet);
                    _tr.WriteLine("    ContentEncoding   : \"{0}\"", httpResponse.ContentEncoding);
                    _tr.WriteLine("    ContentLength     : {0}", httpResponse.ContentLength);
                    _tr.WriteLine("    ContentType       : \"{0}\"", httpResponse.ContentType);
                    _tr.WriteLine("    Cookies           : \"{0}\"", httpResponse.Cookies.GetType());
                    _tr.WriteLine("    Headers           : \"{0}\"", httpResponse.Headers.GetType());
                    _tr.WriteLine("    LastModified      : {0:dd/MM/yyyy HH:mm:ss}", httpResponse.LastModified);
                    _tr.WriteLine("    Method            : \"{0}\"", httpResponse.Method);
                    _tr.WriteLine("    ProtocolVersion   : \"{0}\"", httpResponse.ProtocolVersion);
                    _tr.WriteLine("    ResponseUri       : \"{0}\"", httpResponse.ResponseUri);
                    _tr.WriteLine("    Server            : \"{0}\"", httpResponse.Server);
                    _tr.WriteLine("    StatusCode        : {0}", httpResponse.StatusCode);
                    _tr.WriteLine("    StatusDescription : \"{0}\"", httpResponse.StatusDescription);
                }
                if (response is FileWebResponse)
                {
                    FileWebResponse fileResponse = (FileWebResponse)response;
                    _tr.WriteLine("  FileWebResponse :");
                }
            }
        }
        public void Headers()
        {
            FileWebRequest req = (FileWebRequest)WebRequest.Create(_tempFileUri);

            req.Method = "PUT";
            req.Headers.Add("Disposition", "attach");
            using (Stream s = req.GetRequestStream()) {
                s.WriteByte(72);
                s.WriteByte(110);
                s.WriteByte(80);
                s.Flush();
            }
            req = (FileWebRequest)WebRequest.Create(_tempFileUri);
            using (FileWebResponse resp = (FileWebResponse)req.GetResponse()) {
                Assert.AreEqual(2, resp.Headers.Count, "#1");
                Assert.AreEqual("Content-Length", resp.Headers.Keys [0], "#2");
                Assert.AreEqual("Content-Type", resp.Headers.Keys [1], "#3");
            }
        }
Example #20
0
// <Snippet1>
// <Snippet2>
    public static void GetPage(String url)
    {
        try
        {
            Uri fileUrl = new Uri("file://" + url);
            // Create a 'FileWebrequest' object with the specified Uri.
            FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(fileUrl);
            // Send the 'fileWebRequest' and wait for response.
            FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();
            // Print the ContentLength and ContentType properties received as headers in the response object.
            Console.WriteLine("\nContent length :{0}, Content Type : {1}", myFileWebResponse.ContentLength, myFileWebResponse.ContentType);
            // Release resources of response object.
            myFileWebResponse.Close();
        }
        catch (WebException e)
        {
            Console.WriteLine("\r\nWebException thrown. The Reason for failure is : {0}", e.Status);
        }
        catch (Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
        }
    }
Example #21
0
        private string MakeFileRequest(string Url)
        {
            Uri    uri     = new Uri(Url);
            string Content = string.Empty;

            if (uri.Scheme == Uri.UriSchemeFile)
            {
                FileWebRequest req = (FileWebRequest)FileWebRequest.Create(uri);

                FileWebResponse resp = req.GetResponse() as FileWebResponse;

                Stream stream = resp.GetResponseStream();

                using (StreamReader reader = new StreamReader(stream))
                {
                    Content = reader.ReadToEnd();
                }

                resp.Close();
            }

            return(Content);
        }
Example #22
0
// <Snippet1>
    public static void GetPage(String url)
    {
        try
        {
            Uri fileUrl = new Uri("file://" + url);
            // Create a FileWebrequest with the specified Uri.
            FileWebRequest myFileWebRequest = (FileWebRequest)WebRequest.Create(fileUrl);
            // Send the 'fileWebRequest' and wait for response.
            FileWebResponse myFileWebResponse = (FileWebResponse)myFileWebRequest.GetResponse();
            // Process the response here.
            Console.WriteLine("\nResponse Received.Trying to Close the response stream..");
            // Release resources of response object.
            myFileWebResponse.Close();
            Console.WriteLine("\nResponse Stream successfully closed.");
        }
        catch (WebException e)
        {
            Console.WriteLine("\r\nWebException thrown. The Reason for failure is : {0}", e.Status);
        }
        catch (Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
        }
    }
        public void GetResponseStream()
        {
            FileWebRequest req = (FileWebRequest)WebRequest.Create(_tempFileUri);

            req.Method      = "PUT";
            req.ContentType = "image/png";
            using (Stream s = req.GetRequestStream()) {
                s.WriteByte(72);
                s.WriteByte(110);
                s.WriteByte(80);
                s.Flush();
            }
            req = (FileWebRequest)WebRequest.Create(_tempFileUri);
            FileWebResponse respA = null;
            FileWebResponse respB = null;
            FileStream      fsA   = null;
            FileStream      fsB   = null;

            try {
                respA = (FileWebResponse)req.GetResponse();
                fsA   = respA.GetResponseStream() as FileStream;
                Assert.IsNotNull(fsA, "#A1");
                Assert.IsTrue(fsA.CanRead, "#A2");
                Assert.IsTrue(fsA.CanSeek, "#A3");
                Assert.IsFalse(fsA.CanTimeout, "#A4");
                Assert.IsFalse(fsA.CanWrite, "#A5");
                Assert.AreEqual(3, fsA.Length, "#A6");
                Assert.AreEqual(0, fsA.Position, "#A7");
                try {
                    int i = fsA.ReadTimeout;
                    Assert.Fail("#A8:" + i);
                } catch (InvalidOperationException) {
                }
                try {
                    int i = fsA.WriteTimeout;
                    Assert.Fail("#A9:" + i);
                } catch (InvalidOperationException) {
                }

                respB = (FileWebResponse)req.GetResponse();
                fsB   = respB.GetResponseStream() as FileStream;
                Assert.IsNotNull(fsB, "#B1");
                Assert.IsTrue(fsB.CanRead, "#B2");
                Assert.IsTrue(fsB.CanSeek, "#B3");
                Assert.IsFalse(fsB.CanTimeout, "#B4");
                Assert.IsFalse(fsB.CanWrite, "#B5");
                Assert.AreEqual(3, fsB.Length, "#B6");
                Assert.AreEqual(0, fsB.Position, "#B7");
                try {
                    int i = fsB.ReadTimeout;
                    Assert.Fail("#B8:" + i);
                } catch (InvalidOperationException) {
                }
                try {
                    int i = fsB.WriteTimeout;
                    Assert.Fail("#B9:" + i);
                } catch (InvalidOperationException) {
                }
            } finally {
                if (respA != null)
                {
                    respA.Close();
                }
                if (respB != null)
                {
                    respB.Close();
                }
            }
        }
Example #24
0
        /// <summary>
        /// returns a collection of bytes from a Url
        /// </summary>
        /// <param name="url">The URL to retrieve</param>
        public void GetUrlData(string url)
        {
            Uri uri = new Uri(url);

            if (!uri.IsFile)
            {
                throw new UriFormatException("url is not a local file");
            }

            FileWebRequest request = WebRequest.Create(url) as FileWebRequest;

            if (request == null)
            {
                this.Clear();
                return;
            }

            request.Method = "GET";

            // download the target URL
            FileWebResponse response = (FileWebResponse)request.GetResponse();

            // convert response stream to byte array
            using (Stream stream = response.GetResponseStream())
            {
                ExtendedBinaryReader extReader = new ExtendedBinaryReader(stream);
                _ResponseBytes = extReader.ReadToEnd();
            }

            // For local operations, we consider the data are never compressed. Else, the "Content-Encoding" field
            // in the headers would be "gzip" or "deflate". This could be handled quite easily with SharpZipLib for instance.

            // sometimes URL is indeterminate, eg, "http://website.com/myfolder"
            // in that case the folder and file resolution MUST be done on
            // the server, and returned to the client as ContentLocation
            _ContentLocation = response.Headers["Content-Location"];
            if (_ContentLocation == null)
            {
                _ContentLocation = "";
            }

            // if we have string content, determine encoding type
            // (must cast to prevent null)
            // HACK We determine the content type based on the uri extension,
            // as the header returned by the FileWebResponse is always "application/octet-stream" (hard coded in .NET!!)
            // text/html
            string ext = Path.GetExtension(uri.LocalPath).TrimStart(new char[] { '.' });

            switch (ext)
            {
            // What's important here is to identify TEXT mime types. Because, the default will resort to binary file.
            case "htm":
            case "html":    _DetectedContentType = "text/html";                     break;

            case "css":             _DetectedContentType = "text/css";                      break;

            case "csv":             _DetectedContentType = "text/csv";                      break;

            case "rtf":             _DetectedContentType = "text/rtf";                      break;

            case "aspx":
            case "xsl":
            case "xml":             _DetectedContentType = "text/xml";                      break;

            case "bmp":             _DetectedContentType = "image/bmp";                     break;

            case "gif":             _DetectedContentType = "image/gif";                     break;

            case "ico":             _DetectedContentType = "image/x-icon";          break;

            case "jpg":
            case "jpeg":    _DetectedContentType = "image/jpeg";            break;

            case "png":             _DetectedContentType = "image/png";                     break;

            case "tif":
            case "tiff":    _DetectedContentType = "image/tiff";            break;

            case "js":              _DetectedContentType = "application/x-javascript";                      break;

            default:
                // Line commented: we don't change it
                _DetectedContentType = response.Headers["Content-Type"];                                // Always "application/octet-stream" ...
                break;
            }
            if (_DetectedContentType == null)
            {
                _DetectedContentType = "";
            }
            if (ResponseIsBinary)
            {
                _DetectedEncoding = null;
            }
            else if (_ForcedEncoding == null)
            {
                _DetectedEncoding = DetectEncoding(_DetectedContentType, _ResponseBytes);
            }
        }
Example #25
0
        private void DownloadFile(string FileName, string strUrl)
        {
            HttpWebRequest  webRequest;
            HttpWebResponse webResponse = null;
            FileWebRequest  fileRequest;
            FileWebResponse fileResponse = null;
            bool            isFile       = false;

            try
            {
                System.Globalization.DateTimeFormatInfo dfi = null;
                System.Globalization.CultureInfo        ci  = null;
                ci  = new System.Globalization.CultureInfo("zh-CN");
                dfi = new System.Globalization.DateTimeFormatInfo();

                //WebRequest wr = WebRequest.Create("");

                //System.Net.WebResponse w=wr.
                DateTime      fileDate;
                long          totalBytes;
                DirectoryInfo theFolder = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
                string        fileName  = Path.Combine(theFolder.FullName, FileName);

                isFile = (HttpWebRequest.Create(strUrl) is FileWebRequest);

                if (isFile)
                {
                    fileRequest  = (FileWebRequest)FileWebRequest.Create(strUrl);
                    fileResponse = (FileWebResponse)fileRequest.GetResponse();
                    if (fileResponse == null)
                    {
                        return;
                    }
                    fileDate   = DateTime.Now;
                    totalBytes = fileResponse.ContentLength;
                }
                else
                {
                    webRequest  = (HttpWebRequest)HttpWebRequest.Create(strUrl);
                    webResponse = (HttpWebResponse)webRequest.GetResponse();
                    if (webResponse == null)
                    {
                        return;
                    }
                    fileDate   = webResponse.LastModified;
                    totalBytes = webResponse.ContentLength;
                }

                //pbUpdate.Maximum = Convert.ToInt32(totalBytes);

                Stream stream;
                if (isFile)
                {
                    stream = fileResponse.GetResponseStream();
                }
                else
                {
                    stream = webResponse.GetResponseStream();
                }
                FileStream sw = new FileStream(fileName, FileMode.Create);
                int        totalDownloadedByte = 0;
                Byte[]     @by   = new byte[1024];
                int        osize = stream.Read(@by, 0, @by.Length);
                while (osize > 0)
                {
                    totalDownloadedByte = osize + totalDownloadedByte;
                    sw.Write(@by, 0, osize);
                    //pbUpdate.Value = totalDownloadedByte;
                    osize = stream.Read(@by, 0, @by.Length);
                }
                sw.Close();
                stream.Close();

                File.SetLastWriteTime(FileName, fileDate);
            }
            catch //(Exception ex)
            {
                if (fileResponse != null)
                {
                    fileResponse.Close();
                }

                if (webResponse != null)
                {
                    webResponse.Close();
                }
            }
        }
Example #26
0
        void Button1Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "HTML|*.html";

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.Clear();
                //INIZIALIZZAZIONE VARIABILI PER FILTRI CON CHECKBOX
                string puntoSpazio  = "";
                string spazioPunto  = "";
                string puntoSingolo = "";
                if (checkBox1.Checked)
                {
                    puntoSpazio = ". ";
                }
                if (checkBox2.Checked)
                {
                    spazioPunto = " .";
                }
                if (checkBox3.Checked)
                {
                    puntoSingolo = ".";
                }
                //--------------------------------------------------

                string filePath = ofd.FileName;                                 //OTTIENE LA STRINGA CORRISPONDENTE AL PERCORSO DEL FILE SELEZIONATO
                //----------CODICE-PER-PRENDERE-IL-SORGENTE-DELL'HTML-------------
                FileWebRequest  request    = (FileWebRequest)WebRequest.Create(filePath);
                FileWebResponse response   = (FileWebResponse)request.GetResponse();
                StreamReader    sr         = new StreamReader(response.GetResponseStream());
                String          htmlSource = sr.ReadToEnd();
                //----------------------------------------------------------------
                //Dentro htmlSource c'è una il sorgente

                //string[] testSplit = htmlSource.Split("<tr id=\"r1\">");
                string[] htmlSplitted = null;
                htmlSplitted = htmlSource.Split(new[] { "<tr id=" }, StringSplitOptions.None);



                //richTextBox1.Text = htmlSplitted2[0];

                double t = 100 / htmlSplitted.Length;

                for (int i = 1; i < htmlSplitted.Length; i++)
                {
                    string[] htmlSplitted1 = null;
                    htmlSplitted1 = htmlSplitted[i].Split(new[] { "<td class=\"td2\">" }, StringSplitOptions.None);
                    //--------------------------------MODIFICHE PER AGGIUNGERE ID E SOURCE-------------------------------------------------
                    string[] htmlSplitSup = null;                                                                                       //Variabile che creo per prendere anche id source
                    htmlSplitSup = htmlSplitted1[0].Split(new[] { "</td>" }, StringSplitOptions.None);

                    string[] htmlSplitSup2 = null;
                    htmlSplitSup2 = htmlSplitSup[0].Split(new[] { ">" }, StringSplitOptions.None);

                    string[] htmlSplitSup3 = null;
                    htmlSplitSup3 = htmlSplitSup[1].Split(new[] { "<td>" }, StringSplitOptions.None);

                    string id     = htmlSplitSup2[2];
                    string source = htmlSplitSup3[1];
                    //-----------------------------------------------------------------------------------------------------------------
                    if (htmlSplitted1.Length < 2)
                    {
                        continue;
                    }
                    //LA STRINGA DI TARGHE E' DENTRO htmlSplitted2
                    string[] htmlSplitted2 = null;
                    htmlSplitted2 = htmlSplitted1[1].Split(new[] { "</td>" }, StringSplitOptions.None);


                    if (htmlSplitted2[0].Contains(puntoSpazio) || htmlSplitted2[0].Contains(spazioPunto) || htmlSplitted2[0].Contains(puntoSingolo))
                    {
                        richTextBox1.Text += id + " | " + source + " | " + htmlSplitted2[0] + "\n";
                    }
                }
                //richTextBox1.Text = ris;
                sr.Close();
            }
        }
Example #27
0
        /// <summary>
        /// Can be called syncronized to get a Http Web ResponseStream.
        /// </summary>
        /// <param name="method">The HTTP request method</param>
        /// <param name="address">Url to request</param>
        /// <param name="newAddress">out string. return a new url, if the original requested is permanent moved</param>
        /// <param name="credentials">Url credentials</param>
        /// <param name="userAgent"></param>
        /// <param name="proxy">Proxy to use</param>
        /// <param name="ifModifiedSince">Header date</param>
        /// <param name="eTag">Header tag</param>
        /// <param name="timeout">Request timeout. E.g. 60 * 1000, means one minute timeout.
        /// If zero or less than zero, the default timeout of one minute will be used</param>
        /// <param name="responseResult">out. Result of the request</param>
        /// <param name="cookie">The cookie associated with the request</param>
        /// <param name="body">The body of the HTTP request (if it is a POST)</param>
        /// <param name="additonalHeaders">These are additional headers that are being specified to the Web request</param>
        /// <returns>Stream</returns>
        public static Stream GetResponseStream(HttpMethod method, string address, out string newAddress,
                                               ICredentials credentials,
                                               string userAgent,
                                               IWebProxy proxy, ref DateTime ifModifiedSince, ref string eTag,
                                               int timeout, out RequestResult responseResult, Cookie cookie, string body,
                                               WebHeaderCollection additonalHeaders)
        {
            bool      useDefaultCred    = false;
            int       requestRetryCount = 0;
            const int MaxRetries        = 25;

            newAddress = null;

send_request:

            string requestUri = address;

            if (useDefaultCred)
            {
                credentials = CredentialCache.DefaultCredentials;
            }

            WebResponse wr =
                GetResponse(method, address, credentials, userAgent, proxy, ifModifiedSince, eTag, timeout, cookie, body,
                            additonalHeaders);

            HttpWebResponse response     = wr as HttpWebResponse;
            FileWebResponse fileresponse = wr as FileWebResponse;

            if (response != null)
            {
                if (HttpStatusCode.OK == response.StatusCode ||
                    HttpExtendedStatusCode.IMUsed == (HttpExtendedStatusCode)response.StatusCode)
                {
                    responseResult = RequestResult.OK;
                    // stream will be disposed on response.Close():
                    Stream ret = MakeSeekableStream(response.GetResponseStream()); //GetDeflatedResponse(response);
                    response.Close();
                    return(ret);
                }
                if ((response.StatusCode == HttpStatusCode.MovedPermanently) ||
                    (response.StatusCode == HttpStatusCode.Moved))
                {
                    newAddress = HtmlHelper.ConvertToAbsoluteUrl(response.Headers["Location"], address, false);
                    address    = newAddress;
                    response.Close();

                    if (requestRetryCount < MaxRetries)
                    {
                        requestRetryCount++;
                        goto send_request;
                    }
                }
                else if (IsUnauthorized(response.StatusCode))
                {
                    //try with default credentials

                    useDefaultCred = true;
                    response.Close();

                    if (requestRetryCount < MaxRetries)
                    {
                        requestRetryCount++;
                        goto send_request;
                    }
                }
                else if (IsRedirect(response.StatusCode))
                {
                    address = HtmlHelper.ConvertToAbsoluteUrl(response.Headers["Location"], address, false);
                    response.Close();

                    if (requestRetryCount < MaxRetries)
                    {
                        requestRetryCount++;
                        goto send_request;
                    }
                }
                else if (IsAccessForbidden(response.StatusCode) &&
                         requestUri.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    throw new ClientCertificateRequiredException();
                }
                else if (response.StatusCode == HttpStatusCode.Gone)
                {
                    throw new ResourceGoneException();
                }
                else
                {
                    string statusCode = response.StatusDescription;
                    if (String.IsNullOrEmpty(statusCode))
                    {
                        statusCode = response.StatusCode.ToString();
                    }
                    response.Close();
                    throw new WebException(String.Format("Request of '{0}' gets unexpected HTTP response: {1}",
                                                         requestUri, statusCode));
                }

                // unauthorized more than MaxRetries
                if (IsUnauthorized(response.StatusCode))
                {
                    response.Close();
                    throw new ResourceAuthorizationException();
                }

                //we got a moved, redirect more than MaxRetries
                string returnCode = response.StatusDescription;
                if (String.IsNullOrEmpty(returnCode))
                {
                    returnCode = response.StatusCode.ToString();
                }
                response.Close();
                throw new WebException(String.Format("Request of '{0}' gets repeated HTTP response: {1}", requestUri,
                                                     returnCode));
            }

            if (fileresponse != null)
            {
                responseResult = RequestResult.OK;
                // stream will be disposed on response.Close():
                Stream ret = MakeSeekableStream(fileresponse.GetResponseStream()); //GetDeflatedResponse(fileresponse);
                fileresponse.Close();
                return(ret);
            }
            throw new ApplicationException("no handler for WebResponse. Address: " + requestUri);
        }
Example #28
0
        /// <summary>
        /// Called to extract a list from the specified URL.
        /// </summary>
        /// <param name=”url”>The URL to extract the list
        /// from.</param>
        /// <param name=”listType”>What type of list, specify
        /// its beginning tag (i.e. <UL>)</param>
        /// <param name=”optionList”>Which list to search,
        /// zero for first.</param>

        public void ProcessTable(Uri url, int tableNum)
        {

            //ignore bad cert code
            IgnoreBadCertificates();

            //code to allow program with work with different authentication schemes
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            List<String> list = new List<String>();
            //WebRequest http = HttpWebRequest.Create(url);
            FileWebRequest http = (FileWebRequest)WebRequest.Create(url);
            //HttpWebResponse response = (HttpWebResponse)http.GetResponse();
            FileWebResponse response = (FileWebResponse)http.GetResponse();
            Stream istream = response.GetResponseStream();
            ParseHTML parse = new ParseHTML(istream);
            StringBuilder buffer = new StringBuilder();
            bool capture = false;
            Advance(parse, "table", tableNum);
            int ch;
            while ((ch = parse.Read()) != -1)
            {
                if (ch == 0)
                {
                    HTMLTag tag = parse.Tag;
                    if (String.Compare(tag.Name, "tr", true) == 0)
                    {
                        list.Clear();
                        capture = false;
                        buffer.Length = 0;
                    }
                    else if (String.Compare(tag.Name, "/tr", true) == 0)
                    {
                        if (list.Count > 0)
                        {
                            ProcessTableRow(list);
                            list.Clear();
                        }
                    }
                    else if (String.Compare(tag.Name, "td", true) == 0)
                    {
                        if (buffer.Length > 0)
                            list.Add(buffer.ToString());
                        buffer.Length = 0;
                        capture = true;
                    }
                    else if (String.Compare(tag.Name, "/td", true) == 0)
                    {
                        list.Add(buffer.ToString());
                        buffer.Length = 0;
                        capture = false;
                    }
                    else if (String.Compare(tag.Name, "/table", true) == 0)
                    {
                        break;
                    }
                }
                else
                {
                    if (capture)
                        buffer.Append((char)ch);
                }
            }
        }//end ProcessTable
Example #29
0
 public AntFileWebResponse(FileWebResponse webResponse) : this()
 {
     _webResponse = webResponse;
 }
Example #30
0
        /// <summary>
        /// Process the request (once). Get the response (page content, cookies, ...).
        /// </summary>
        private void ProcessRequest()
        {
            if (RequestProcessed)
            {
                return; // test, unlocked
            }
            lock (this)
            {
                if (RequestProcessed)
                {
                    return;                   // double checked lock, test again
                }
                RequestProcessed = true;

                StorageValue data = (StorageValue)DataCache.GetItem(StorageKey,
                                                                    delegate(out DateTime expiration)
                {
                    WebRequest webreq = WebRequest.Create(ContextUri);

                    string RespContent           = null;
                    CookieCollection RespCookies = null;

                    if (webreq is HttpWebRequest)
                    {
                        HttpWebRequest req = (HttpWebRequest)webreq;

                        req.Referer           = (RefererContext != null && RefererContext.ContextUri != null) ? RefererContext.ContextUri.AbsoluteUri : null;
                        req.UserAgent         = DefaultUserAgent;
                        req.Timeout           = 30000;
                        req.AllowAutoRedirect = false;
                        req.KeepAlive         = false;
                        var cookieJar         = req.CookieContainer = new CookieContainer();
                        if (RefererContext != null && RefererContext.Cookies != null)
                        {       // TODO: filter cookies by domain and path
                            req.CookieContainer.Add(RefererContext.Cookies);
                        }
                        //req.Headers.Add("Accept-Language", "en,cs");

                        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

                        // page content
                        Stream RespStream = resp.GetResponseStream();
                        RespContent       = new StreamReader(RespStream /*, Encoding.GetEncoding(resp.ContentEncoding)*/).ReadToEnd();
                        RespStream.Close();

                        // cookies
                        foreach (Cookie c in cookieJar.GetCookies(req.RequestUri))
                        {
                            if (RespCookies == null)
                            {
                                RespCookies = new CookieCollection();
                            }

                            RespCookies.Add(c);
                        }

                        // TODO: headers (language, cache expire, content type, encoding, Response URI, ...)

                        // close the response
                        resp.Close();
                    }
                    else if (webreq is FileWebRequest)
                    {
                        FileWebRequest req   = (FileWebRequest)webreq;
                        FileWebResponse resp = (FileWebResponse)req.GetResponse();

                        // page content
                        Stream RespStream = resp.GetResponseStream();
                        RespContent       = new StreamReader(RespStream /*, Encoding.GetEncoding(resp.ContentEncoding)*/).ReadToEnd();
                        RespStream.Close();

                        // close the response
                        resp.Close();
                    }

                    expiration = DateTime.Now.AddHours(1.0);        // TODO: time based on HTML header or HtmlContext parameters

                    return(new StorageValue()
                    {
                        Content = RespContent, Cookies = RespCookies
                    });
                }
                                                                    );

                _Content = data.Content;
                _Cookies = data.Cookies;
            }
        }