コード例 #1
0
        public bool CanReach(RemoteSession session, string remoteUri, TimeSpan timeout)
        {
            CouchbaseLiteHttpClientFactory.SetupSslCallback();
            var uri = new Uri(remoteUri);

            try {
                using (var c = new TcpClient(uri.Host, uri.Port)) {
                    return(true);
                }
            } catch (Exception e) {
                Log.To.Sync.I(TAG, "Didn't get successful connection to {0}", remoteUri);
                Log.To.Sync.V(TAG, "   Cause: ", e);
                LastError = e;
                return(false);
            }
        }
コード例 #2
0
        public bool CanReach(string remoteUri, TimeSpan timeout)
        {
            CouchbaseLiteHttpClientFactory.SetupSslCallback();
            HttpWebRequest request;

            var uri         = new Uri(remoteUri);
            var credentials = uri.UserInfo;

            if (!String.IsNullOrEmpty(credentials))
            {
                remoteUri = string.Format("{0}://{1}{2}", uri.Scheme, uri.Authority, uri.PathAndQuery);
                request   = WebRequest.CreateHttp(remoteUri);
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)));
                request.PreAuthenticate = true;
            }
            else
            {
                request = WebRequest.CreateHttp(remoteUri);
            }

            request.AllowWriteStreamBuffering = true;
            request.Timeout = (int)timeout.TotalMilliseconds;
            request.Method  = "HEAD";

            try {
                using (var response = (HttpWebResponse)request.GetResponse()) {
                    return(true); //We only care that the server responded
                }
            } catch (Exception e) {
                var we = e as WebException;
                if (we != null && we.Status == WebExceptionStatus.ProtocolError)
                {
                    return(true); //Getting an HTTP error technically means we can connect
                }

                Log.To.Sync.I(TAG, "Didn't get successful connection to {0}", remoteUri);
                Log.To.Sync.V(TAG, "   Cause: ", e);
                LastError = e;
                return(false);
            }
        }