public async Task <string> GetAsync(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var wr = PrepareGetWebRequest(relativeUrl, parameters); try { var response = await GetResponseAsync(wr.request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(wr.uri.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { if (e.Response != null) { using (e.Response) { var r = new HttpWebResponseAdapter(e.Response); if (r.StatusCode == HttpStatusCode.NotModified) { return(wr.cache.Data); } using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) { throw new SolrConnectionException(await sr.ReadToEndAsync(), e, wr.uri.Uri.ToString()); } } } throw new SolrConnectionException(e, wr.uri.Uri.ToString()); } }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } if (Certificate != null) { request.ProtocolVersion = HttpVersion.Version10; request.PreAuthenticate = true; request.ClientCertificates.Add(Certificate); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; ServicePointManager.ServerCertificateValidationCallback += AcceptSelfSignedCertificate; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { if (e.Response != null) { using (e.Response) { var r = new HttpWebResponseAdapter(e.Response); if (r.StatusCode == HttpStatusCode.NotModified) { return(cached.Data); } using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) { throw new SolrConnectionException(sr.ReadToEnd(), e, u.Uri.ToString()); } } } throw new SolrConnectionException(e, u.Uri.ToString()); } }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { var msg = e.Message; if (e.Response != null) { HttpStatusCode solrHttpStatusCode; using (e.Response) { var r = new HttpWebResponseAdapter(e.Response); solrHttpStatusCode = r.StatusCode; if (solrHttpStatusCode == HttpStatusCode.NotModified) { return(cached.Data); } using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) msg = sr.ReadToEnd(); } throw new SolrConnectionException(msg, e, u.Uri.ToString(), solrHttpStatusCode); } throw new SolrConnectionException(msg, e, u.Uri.ToString()); } }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; //Issue request headers to say we can accept a compressed response request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { if (e.Response != null) { var r = new HttpWebResponseAdapter(e.Response); if (r.StatusCode == HttpStatusCode.NotModified) { return(cached.Data); } if (r.StatusCode == HttpStatusCode.BadRequest) { throw new InvalidFieldException(r.StatusDescription, e); } } throw new SolrConnectionException(e); } }