public void NetworkConnect(IConnectionHelperJustRemote connectionHelper, string userAgent, PURLConnection purlConnection, int connectionTimeout = ParsedUri.CONNECT_TIMEOUT, int readTimeout = ParsedUri.READ_TIMEOUT)
        {
            Uri url = purlConnection.PURL;

            purlConnection.Request = WebRequest.CreateDefault(url) as HttpWebRequest;
            if (purlConnection.Request != null)
            {
                purlConnection.Request.UserAgent        = userAgent;
                purlConnection.Request.Timeout          = connectionTimeout;
                purlConnection.Request.ReadWriteTimeout = readTimeout;

                try
                {
                    purlConnection.Response = (HttpWebResponse)purlConnection.Request.GetResponse();
                }
                catch (WebException e)
                {
                    Debug.WriteLine("Web Exception ::" + e.Message);
                }
                if (purlConnection.Response != null)
                {
                    // TODO check charset (using mime type) and display error message if charset not supported.

                    Uri responseUrl = purlConnection.Response.ResponseUri;
                    if (responseUrl != url) // follow redirects!
                    {
                        string requestPath  = url.AbsolutePath;
                        string responsePath = responseUrl.AbsolutePath;
                        if (requestPath.IndexOf("http://") < 0 && responsePath.IndexOf("http://") < 0)
                        {
                            if (connectionHelper.ProcessRedirect(responseUrl))
                            {
                                purlConnection.Stream = purlConnection.Response.GetResponseStream();
                            }
                            purlConnection.Good = true;
                        }
                        else
                        {
                            Debug.WriteLine("WEIRD: skipping double stuffed URL: " + responseUrl);
                        }
                    }
                    else
                    {
                        purlConnection.Stream = purlConnection.Response.GetResponseStream();
                        purlConnection.Good   = true;
                    }
                }
                else
                {
                    Debug.WriteLine("ERROR: failure to get response from " + url);
                }
            }
            else
            {
                Debug.WriteLine("ERROR: cannot create a connection to " + url);
            }
        }
Esempio n. 2
0
 public void NetworkConnect(IConnectionHelperJustRemote connectionHelper, String userAgent,
                            int connectionTimeout = ParsedUri.CONNECT_TIMEOUT,
                            int readTimeout       = ParsedUri.READ_TIMEOUT)
 {
     FundamentalPlatformSpecifics.Get().NetworkConnect(connectionHelper, userAgent, this, connectionTimeout, readTimeout);
 }
Esempio n. 3
0
 public void NetworkConnect(IConnectionHelperJustRemote connectionHelper, String userAgent,
     int connectionTimeout = ParsedUri.CONNECT_TIMEOUT,
     int readTimeout = ParsedUri.READ_TIMEOUT)
 {
     FundamentalPlatformSpecifics.Get().NetworkConnect(connectionHelper, userAgent, this, connectionTimeout, readTimeout);
 }
        public void NetworkConnect(IConnectionHelperJustRemote connectionHelper, string userAgent, PURLConnection purlConnection, int connectionTimeout = ParsedUri.CONNECT_TIMEOUT, int readTimeout = ParsedUri.READ_TIMEOUT)
        {
            Uri url = purlConnection.PURL;
            purlConnection.Request = WebRequest.CreateHttp(url);
            if (purlConnection.Request != null)
            {
                //            purlConnection.Request.UserAgent = userAgent;
                //            purlConnection.Request.Timeout = connectionTimeout;
                //            purlConnection.Request.ReadWriteTimeout = readTimeout;
                try
                {
                    purlConnection.Response = (HttpWebResponse) purlConnection.Request.GetResponseAsync().Result;
                }
                catch (WebException e)
                {
                    Debug.WriteLine("Web Exception ::" + e.Message);
                }
                if (purlConnection.Response != null)
                {
                    // TODO check charset (using mime type) and display error message if charset not supported.

                    Uri responseUrl = purlConnection.Response.ResponseUri;
                    if (responseUrl != url) // follow redirects!
                    {
                        string requestPath = url.AbsolutePath;
                        string responsePath = responseUrl.AbsolutePath;
                        if (requestPath.IndexOf("http://") < 0 && responsePath.IndexOf("http://") < 0)
                        {
                            if (connectionHelper.ProcessRedirect(responseUrl))
                                purlConnection.Stream = purlConnection.Response.GetResponseStream();
                            purlConnection.Good = true;
                        }
                        else
                        {
                            Debug.WriteLine("WEIRD: skipping double stuffed URL: " + responseUrl);
                        }
                    }
                    else
                    {
                        purlConnection.Stream = purlConnection.Response.GetResponseStream();
                        purlConnection.Good = true;
                    }
                }
                else
                {
                    Debug.WriteLine("ERROR: failure to get response from " + url);
                }
            }
            else
            {
                Debug.WriteLine("ERROR: cannot create a connection to " + url);
            }
        }