public static async ValueTask <string> Request(HttpMethod Method, string URI, string Parameters = null) //, string ProxyString { System.Net.WebRequest req = System.Net.WebRequest.Create(URI); //req.Proxy = new System.Net.WebProxy(ProxyString, true); //Add these, as we're doing a POST req.ContentType = "application/x-www-form-urlencoded"; req.Method = Method.Method; if (!string.IsNullOrEmpty(Parameters)) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter(await req.GetRequestStreamAsync())) //We need to count how many bytes we're sending. Post'ed Faked Forms should be name=value& { //req.ContentLength = sw.Encoding.GetBytes(Parameters).Length; sw.Write(Parameters); //Push it out there sw.Flush(); } } System.Net.WebResponse resp = await req.GetResponseAsync(); if (resp == null) { return(null); } using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream())) return(sr.ReadToEnd().Trim()); }
public async Task <string> Get() { string result = null; try { //"2016-06-12T13:49:24.759Z" string request_string = Program.config_couchdb_url + $"/metadata/2016-06-12T13:49:24.759Z/validator.js"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.Method = "GET"; request.PreAuthenticate = false; System.Net.WebResponse response = (System.Net.HttpWebResponse) await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); result = await reader.ReadToEndAsync(); } catch (Exception ex) { Console.WriteLine(ex); } return(result); }
/// <summary> /// Retrieves the string contents of a remote url containing schema data /// </summary> /// <param name="location">The location of the contents</param> /// <returns>String based Json schema</returns> public virtual string GetRemoteSchemaContents(Uri location) { System.Net.WebRequest webcall = System.Net.WebRequest.Create(location); webcall.ContentType = "application/json"; #if NETFX_CORE return(System.Threading.Tasks.Task.Run(async() => { using (System.Net.WebResponse response = await webcall.GetResponseAsync()) using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream())) { return readall.ReadToEnd(); } }).Result); #elif PORTABLE var response = System.Threading.Tasks.Task.Run(async() => await System.Threading.Tasks.Task.Factory.FromAsync <System.Net.WebResponse> (webcall.BeginGetResponse, webcall.EndGetResponse, null)).Result; using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream())) { return(readall.ReadToEnd()); } #elif PORTABLE40 return(""); // Unsupported #else using (System.Net.WebResponse response = webcall.GetResponse()) using (System.IO.StreamReader readall = new System.IO.StreamReader(response.GetResponseStream())) { return(readall.ReadToEnd()); } #endif }
public override string LoadHTML(string url) { try { System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url); wRequest.Headers.Add("authority", "www.dy2018.com"); wRequest.Headers.Add("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,da;q=0.7"); wRequest.Headers.Add("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); wRequest.ContentType = "text/html; charset=gb2312"; wRequest.Method = "get"; wRequest.UseDefaultCredentials = true; var task = wRequest.GetResponseAsync(); System.Net.WebResponse wResp = task.Result; System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding("GB2312"))) { return(reader.ReadToEnd()); } } catch (Exception ex) { Console.WriteLine($"LoadHTML fail,url:{url},ex:{ex.ToString()}"); LogHelper.Error(url, ex); return(string.Empty); } }
async void GetWeather(string CityName) { string appID = "869a1bfdfb679bdbbbf37f4fac4dd3f1"; string units = "metric"; string apibase = "https://api.openweathermap.org/data/2.5/weather?q="; if (string.IsNullOrEmpty(CityName)) { Toast.MakeText(this, "Please enter a valid city name", ToastLength.Short).Show(); return; } ShowProgressDialogue("Fetching Weather Data...", false); string url = apibase + CityName + "&appid=" + appID + "&units=" + units; var handler = new HttpClientHandler(); HttpClient client = new HttpClient(handler); string result = await client.GetStringAsync(url); Console.WriteLine(result); var resultObject = JObject.Parse(result); string WeatherDescription = resultObject["weather"][0]["description"].ToString(); string icon = resultObject["weather"][0]["icon"].ToString(); string temperature = resultObject["main"]["temp"].ToString(); string placeAddress = resultObject["name"].ToString() + ", " + resultObject["sys"]["country"].ToString(); WeatherDescription = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(WeatherDescription); temperatureText.Text = temperature; placeText.Text = placeAddress; weatherDescriptionText.Text = WeatherDescription; // Download Image Using WebRequest string imageUrl = "http://openweathermap.org/img/w/" + icon + ".png"; System.Net.WebRequest request = default(System.Net.WebRequest); request = System.Net.WebRequest.Create(imageUrl); request.Timeout = int.MaxValue; request.Method = "GET"; System.Net.WebResponse response = default(System.Net.WebResponse); response = await request.GetResponseAsync(); MemoryStream ms = new MemoryStream(); response.GetResponseStream().CopyTo(ms); byte[] imageData = ms.ToArray(); Bitmap bitmap = BitmapFactory.DecodeByteArray(imageData, 0, imageData.Length); weatherImage.SetImageBitmap(bitmap); CloseProgressDialogue(); }
// GET api/values //public IEnumerable<master_record> Get() public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get(string case_id = null) { try { string request_string = Program.config_couchdb_url + "/de_id/_all_docs?include_docs=true"; if (!string.IsNullOrWhiteSpace(case_id)) { request_string = Program.config_couchdb_url + "/de_id/" + case_id; } System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); var result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject> (responseFromServer); return(result); /* * < HTTP/1.1 200 OK * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw; * < Version=1; Path=/; HttpOnly * > ... * < * {"ok":true}*/ } catch (Exception ex) { Console.WriteLine(ex); } return(null); }
public async System.Threading.Tasks.Task <IList <mmria.server.model.c_report_object> > Get() { List <mmria.server.model.c_report_object> result = new List <mmria.server.model.c_report_object>(); System.Console.WriteLine("Recieved message."); try { string request_string = this.get_couch_db_url() + "/report/_all_docs?include_docs=true"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"])) { string auth_session_value = this.Request.Cookies["AuthSession"]; request.Headers.Add("Cookie", "AuthSession=" + auth_session_value); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value); } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string all_docs_result = reader.ReadToEnd(); System.Dynamic.ExpandoObject expando_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(all_docs_result, new Newtonsoft.Json.Converters.ExpandoObjectConverter()); IDictionary <string, object> all_docs_dictionary = expando_result as IDictionary <string, object>; List <object> row_list = all_docs_dictionary ["rows"] as List <object>; foreach (object row_item in row_list) { IDictionary <string, object> row_dictionary = row_item as IDictionary <string, object>; KeyValuePair <bool, mmria.server.model.c_report_object> convert_result = convert(row_dictionary["doc"] as IDictionary <string, object>); if (convert_result.Key) { result.Add(convert_result.Value); } } } catch (Exception ex) { Console.WriteLine(ex); } //return result; return(result); }
// GET api/values //public IEnumerable<mmria.common.model.couchdb.user_alldocs_response> Get() public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get() { try { string request_string = this.get_couch_db_url() + "/_users/_all_docs?include_docs=true&skip=1"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; //request.Method = "GET"; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); /*mmria.common.model.couchdb.user_alldocs_response json_result = Newtonsoft.Json.JsonConvert.DeserializeObject<mmria.common.model.couchdb.user_alldocs_response>(responseFromServer); * mmria.common.model.couchdb.user_alldocs_response[] result = new mmria.common.model.couchdb.user_alldocs_response[] * { * json_result * }; * * return result; */ System.Dynamic.ExpandoObject json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(responseFromServer); return(json_result); } catch (Exception ex) { Console.WriteLine(ex); } return(null); //return new mmria.common.model.couchdb.user[] { default(mmria.common.model.couchdb.user), default(mmria.common.model.couchdb.user) }; }
public async System.Threading.Tasks.Task <System.Dynamic.ExpandoObject> Get() { System.Console.WriteLine("Recieved message."); string result = null; System.Dynamic.ExpandoObject json_result = null; try { //"2016-06-12T13:49:24.759Z" string request_string = this.get_couch_db_url() + "/metadata/2016-06-12T13:49:24.759Z"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession" && auth_session_token[1] != "null") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); //System.Net.WebResponse response = request.GetResponse() as System.Net.WebResponse; System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); result = reader.ReadToEnd(); json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(result, new Newtonsoft.Json.Converters.ExpandoObjectConverter()); } catch (Exception ex) { Console.WriteLine(ex); } //return result; return(json_result); }
// POST api/values public async System.Threading.Tasks.Task Post([FromBody] mmria.common.metadata.app metadata) { bool valid_login = false; try { string request_string = Program.config_couchdb_url + "/_session"; System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(request_string)); request.PreAuthenticate = false; if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"])) { string auth_session_value = this.Request.Cookies["AuthSession"]; request.Headers.Add("Cookie", "AuthSession=" + auth_session_value); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value); } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); session_response json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer); valid_login = json_result.userCTX.name != null; } catch (Exception ex) { Console.WriteLine(ex); } if (valid_login) { Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings(); settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; string object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings); string hash = GetHash(object_string); if (current_edit_list ["metadata"].id != hash) { Current_Edit current = new Current_Edit(); current.id = hash; current.metadata = object_string; current.edit_type = "json"; current_edit_list ["metadata"] = current; } } }
public async System.Threading.Tasks.Task <IEnumerable <session_response> > Get() { try { string request_string = Program.config_couchdb_url + "/session"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); session_response json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer); if (response.Headers["Set-Cookie"] != null) { this.Response.Headers.Add("Set-Cookie", response.Headers["Set-Cookie"]); string[] set_cookie = response.Headers["Set-Cookie"].Split(';'); string[] auth_array = set_cookie[0].Split('='); if (auth_array.Length > 1) { string auth_session_token = auth_array[1]; json_result.auth_session = auth_session_token; } else { json_result.auth_session = ""; } } session_response[] result = new session_response[] { json_result }; return(result); } catch (Exception ex) { Console.WriteLine(ex); } return(null); }
/// <summary> /// 取得User Name, Email /// </summary> private async Task <(CloudStorageResult result, string userName, string userEmail)> GetUserInfoAsync() { string userName = null, userEmail = null; CloudStorageResult result = new CloudStorageResult(); try { System.Net.WebRequest request = System.Net.WebRequest.Create(UerInfoEndpoint + oauthClient.AccessToken); request.Method = "GET"; request.ContentType = "application/json"; // Get the response. System.Net.WebResponse response = await request.GetResponseAsync(); // Display the status. //Console.WriteLine(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = await reader.ReadToEndAsync(); // Display the content. Console.WriteLine(responseFromServer); // Clean up the streams and the response. reader.Close(); reader.Dispose(); dataStream.Close(); dataStream.Dispose(); response.Close(); response.Dispose(); if (!string.IsNullOrEmpty(responseFromServer)) { Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(responseFromServer); userEmail = jObject["email"]?.ToString(); userName = jObject["name"]?.ToString(); result.Status = Status.Success; } } catch (Exception ex) { result.Message = ex.Message; } return(result, userName, userEmail); }
private async Task _callPush() { try { //App Service Publish Profile Credentials //string userName = "******"; //userName //string userPassword = "******"; //userPWD ////change webJobName to your WebJob name //string webJobName = "WEBJOBNAME"; //var unEncodedString = String.Format($"{userName}:{userPassword}"); //var encodedString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(unEncodedString)); //Change this URL to your WebApp hosting the string URL = "https://skagry-net-core.azurewebsites.net/api/job/push"; System.Net.WebRequest request = System.Net.WebRequest.Create(URL); request.Method = "GET"; //request.ContentLength = 0; //request.Headers["Authorization"] = "Basic " + encodedString; System.Net.WebResponse response = await request.GetResponseAsync(); var responseFromServer = "no responce"; using (System.IO.Stream dataStream = response.GetResponseStream()) { using (System.IO.StreamReader reader = new System.IO.StreamReader(dataStream)) { responseFromServer = await reader.ReadToEndAsync(); } } Console.WriteLine(responseFromServer); //no response } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } finally { await Task.Delay(30000); Console.WriteLine("run Next trigger:" + DateTime.UtcNow); } }
internal async System.Threading.Tasks.Task <string> HttpPost(string URI, string Parameters) { System.Net.WebRequest req = System.Net.WebRequest.Create(BaseURI + URI); req.ContentType = "application/json"; req.Method = "POST"; byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters); //req.ContentLength = bytes.Length; System.IO.Stream os = await req.GetRequestStreamAsync(); os.Write(bytes, 0, bytes.Length); //Push it out there os.Dispose(); System.Net.WebResponse resp = await req.GetResponseAsync(); if (resp == null) { return(null); } System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); return(sr.ReadToEnd().Trim()); }
public static string GetHTMLByURL(string Url, string type = "UTF-8") { try { Url = Url.ToLower(); System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); // Get the response instance. System.Net.WebResponse wResp = wReq.GetResponseAsync().Result; System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type))) { return(reader.ReadToEnd()); } } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); return(string.Empty); } }
// GET api/values/5 public async System.Threading.Tasks.Task <mmria.common.model.couchdb.user> Get(string id) { mmria.common.model.couchdb.user result = null; try { string request_string = this.get_couch_db_url() + "/_users/" + id; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); result = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.user>(responseFromServer); } catch (Exception ex) { Console.WriteLine(ex); } return(result); }
private async Task <int> GetFileSize(string url) { try { int result = 0; System.Net.WebRequest req = System.Net.WebRequest.Create(url); req.Method = "HEAD"; using (System.Net.WebResponse resp = await req.GetResponseAsync()) { if (long.TryParse(resp.Headers.Get("Content-Length"), out long ContentLength)) { result = Convert.ToInt32(ContentLength); } } return(result); } catch { return(0); } }
public async System.Threading.Tasks.Task <string> Get() { System.Console.WriteLine("Recieved message."); string result = null; try { //"2016-06-12T13:49:24.759Z" string request_string = Program.config_couchdb_url + $"/metadata/2016-06-12T13:49:24.759Z/mmria-check-code.js"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.Method = "GET"; request.PreAuthenticate = false; /* * if (!string.IsNullOrWhiteSpace(this.Request.Cookies["AuthSession"])) * { * string auth_session_value = this.Request.Cookies["AuthSession"]; * request.Headers.Add("Cookie", "AuthSession=" + auth_session_value); * request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_value); * } */ System.Net.WebResponse response = (System.Net.HttpWebResponse) await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); result = await reader.ReadToEndAsync(); } catch (Exception ex) { Console.WriteLine(ex); } return(result); }
public async static Task <Bitmap> loadBitmapFromUrl(string URL) { if (Memory.imageCache.ContainsKey(URL)) { return(Memory.imageCache[URL]); } else { try { System.Net.WebRequest request = System.Net.WebRequest.Create(URL); System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream responseStream = response.GetResponseStream(); Bitmap responseImg = new Bitmap(responseStream); if (!Memory.imageCache.ContainsKey(URL)) { if (Memory.imageCache.Count > 19) { Memory.imageCache.Remove(Memory.imageCache.First().Key); } Memory.imageCache.Add(URL, responseImg); return(responseImg); } else { return(Memory.imageCache[URL]); } } catch (Exception e) { _log.Error(e, "Could not load image from URL!"); return(Properties.Resources.No_Image_Icon); } } }
/// <summary> /// 请求微信接口(Async方式增加吞吐量); /// </summary> /// <param name="url"></param> /// <param name="param"></param> /// <param name="contenttype"></param> /// <param name="method"></param> /// <returns></returns> public async static Task <string> RequestAsync(string url, object param, string contenttype = "application/json;charset=utf-8", string method = "post") { string responseString = string.Empty; System.Net.WebRequest request = System.Net.WebRequest.Create(url); request.ContentType = contenttype; request.Method = method; if (param != null) { using (Stream stream = await request.GetRequestStreamAsync()) { string strJson = JsonConvert.SerializeObject(param); byte[] bytes = Encoding.UTF8.GetBytes(strJson); await stream.WriteAsync(bytes, 0, bytes.Length); } } using (var response = (await request.GetResponseAsync()).GetResponseStream()) { StreamReader reader = new StreamReader(response, Encoding.UTF8); responseString = reader.ReadToEnd(); } return(responseString); }
public static string GetHTMLByURL(string url) { try { System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url); wRequest.ContentType = "text/html; charset=gb2312"; wRequest.Method = "get"; wRequest.UseDefaultCredentials = true; // Get the response instance. var task = wRequest.GetResponseAsync(); System.Net.WebResponse wResp = task.Result; System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding("GB2312"))) { return(reader.ReadToEnd()); } } catch (Exception ex) { LogHelper.Error("GetHTMLByURL Exception", ex, new { Url = url }); return(string.Empty); } }
// POST api/values public async System.Threading.Tasks.Task Post() { bool valid_login = false; mmria.common.metadata.app metadata = null; try { System.IO.Stream dataStream0 = await this.Request.Content.ReadAsStreamAsync(); // Open the stream using a StreamReader for easy access. //dataStream0.Seek(0, System.IO.SeekOrigin.Begin); System.IO.StreamReader reader0 = new System.IO.StreamReader(dataStream0); // Read the content. string temp = reader0.ReadToEnd(); metadata = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.metadata.app>(temp); //string metadata = DecodeUrlString(temp); } catch (Exception ex) { } try { string request_string = Program.config_couchdb_url + "/_session"; System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); session_response json_result = Newtonsoft.Json.JsonConvert.DeserializeObject <session_response>(responseFromServer); valid_login = json_result.userCTX.name != null; } catch (Exception ex) { Console.WriteLine(ex); } if (valid_login) { Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings(); settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; string object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings); string hash = GetHash(object_string); if (current_edit_list ["metadata"].id != hash) { Current_Edit current = new Current_Edit(); current.id = hash; current.metadata = object_string; current.edit_type = "json"; current_edit_list ["metadata"] = current; } } }
// GET api/values //public IEnumerable<master_record> Get() public async System.Threading.Tasks.Task <IEnumerable <export_queue_item> > Get() { List <export_queue_item> result = new List <export_queue_item>(); try { string request_string = Program.config_couchdb_url + "/export_queue/_all_docs?include_docs=true"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); IDictionary <string, object> response_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(responseFromServer) as IDictionary <string, object>; IList <object> enumerable_rows = response_result["rows"] as IList <object>; foreach (IDictionary <string, object> enumerable_item in enumerable_rows) { IDictionary <string, object> doc_item = enumerable_item["doc"] as IDictionary <string, object>; export_queue_item item = new export_queue_item(); try { item._id = doc_item ["_id"].ToString(); item._rev = doc_item ["_rev"].ToString(); item._deleted = doc_item.ContainsKey("_deleted") ? doc_item["_deleted"] as bool?: null; item.date_created = doc_item["date_created"] as DateTime?; item.created_by = doc_item.ContainsKey("created_by") ? doc_item["created_by"] as string: null; item.date_last_updated = doc_item["date_last_updated"] as DateTime?; item.last_updated_by = doc_item.ContainsKey("last_updated_by")? doc_item["last_updated_by"] as string : null; item.file_name = doc_item["file_name"] != null? doc_item["file_name"].ToString() : null; item.export_type = doc_item["export_type"] != null? doc_item["export_type"].ToString() : null; item.status = doc_item["status"] != null? doc_item["status"].ToString() : null; result.Add(item); } catch (Exception ex) { // do nothing for now } } return(result); /* * < HTTP/1.1 200 OK * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw; * < Version=1; Path=/; HttpOnly * > ... * < * {"ok":true}*/ } catch (Exception ex) { //Console.WriteLine (ex); } return(null); }
public async System.Threading.Tasks.Task <IList <mmria.server.model.c_report_object> > Get() { List <mmria.server.model.c_report_object> result = new List <mmria.server.model.c_report_object>(); System.Console.WriteLine("Recieved message."); try { string request_string = this.get_couch_db_url() + "/report/_all_docs?include_docs=true"; System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string all_docs_result = reader.ReadToEnd(); System.Dynamic.ExpandoObject expando_result = Newtonsoft.Json.JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(all_docs_result, new Newtonsoft.Json.Converters.ExpandoObjectConverter()); IDictionary <string, object> all_docs_dictionary = expando_result as IDictionary <string, object>; List <object> row_list = all_docs_dictionary ["rows"] as List <object>; foreach (object row_item in row_list) { IDictionary <string, object> row_dictionary = row_item as IDictionary <string, object>; KeyValuePair <bool, mmria.server.model.c_report_object> convert_result = convert(row_dictionary["doc"] as IDictionary <string, object>); if (convert_result.Key) { result.Add(convert_result.Value); } } /* * { * "total_rows": 3, "offset": 0, "rows": [ * {"id": "doc1", "key": "doc1", "value": {"rev": "4324BB"}}, * {"id": "doc2", "key": "doc2", "value": {"rev":"2441HF"}}, * {"id": "doc3", "key": "doc3", "value": {"rev":"74EC24"}} * ] * }*/ } catch (Exception ex) { Console.WriteLine(ex); } //return result; return(result); }
protected async Task <SearchViewModel> Search(SearchViewModel.SearchQuery query, string page = null) { var model = new SearchViewModel(); int ResultsPerPage = 10; model.ResultsPerPage = ResultsPerPage; await LoadAsync(model); #if !DEBUG try { #endif model.Title = "Search"; bool isTranslationsSearch = string.Equals(query.Text, "translation", StringComparison.OrdinalIgnoreCase) || string.Equals(query.Text, "translations", StringComparison.OrdinalIgnoreCase); string requestPath = Properties.Settings.Default.AzureSearchUri.ToString(); if (!string.IsNullOrEmpty(query.Text)) { if (!isTranslationsSearch) { requestPath += string.Format("&{0}={1}", "search", UrlEncoder.Default.Encode(query.Text)); } requestPath += string.Format("&{0}={1}", "searchMode", "all"); } //if (!string.IsNullOrEmpty(query.DateRange)) //requestPath += string.Format("+{0}:{1}", "daterange", query.DateRange); requestPath += string.Format("&{0}={1}", "$top", Convert.ToString(ResultsPerPage)); requestPath += string.Format("&{0}={1}", "$select", "key,releaseType,documentsHeadline,documentsSubheadline,summary,publishDateTime,hasMediaAssets,assetUrl,translations,hasTranslations, socialMediaHeadline"); requestPath += string.Format("&{0}={1}", "$orderby", "publishDateTime desc"); var facets = new Dictionary <string, string> { { "languages", "Language" }, { "collection", "Date" }, { "ministries", "Ministry" }, { "sectors", "Sector" }, { "location", "City" }, { "releaseType", "Content" } }; bool useCustomRange = query.UseCustomRange(); foreach (var facet in facets) { if (facet.Value == "Date" && useCustomRange) { continue; } if (query.Filters?.ContainsKey(facet.Value) != true) { requestPath += string.Format("&{0}={1}", "facet", facet.Key); } } var filters = new List <string>(); if (isTranslationsSearch) { filters.Add("hasTranslations eq true"); filters.Add("translations ne null"); filters.Add("translations ne ''"); } if (useCustomRange) { filters.Add("publishDateTime le " + query.ToDate.ToUniversalTime().AddDays(1).ToString("s") + "Z"); // include the selected day too filters.Add("publishDateTime ge " + query.FromDate.ToUniversalTime().ToString("s") + "Z"); } if (query.Filters != null) { foreach (var filter in query.Filters) { string facetKey = facets.SingleOrDefault(f => f.Value == filter.Key).Key; filters.Add(string.Format(facetKey.EndsWith('s') ? "{0}/any(t: t eq '{1}')" : "{0} eq '{1}'", facetKey, filter.Value.Replace("'", "''"))); } } if (filters.Count != 0) { requestPath += string.Format("&{0}={1}", "$filter", string.Join(" and ", filters)); } //This should match page meta data date format, which is now "yyyy-mm" //if (query.YearMonth != null) // requestPath += String.Format("&{0}={1}", "partialfields", "DC%252Edate%252Eissued:" + query.YearMonth); requestPath += string.Format("&{0}={1}", "$count", "true"); int skip = (int.Parse(page ?? "1") - 1) * ResultsPerPage; if (skip > 0) { requestPath += string.Format("&{0}={1}", "$skip", skip); } dynamic searchServiceResult = null; using (Profiler.StepStatic("Calling search.gov.bc.ca")) { System.Net.WebRequest request = System.Net.WebRequest.Create(requestPath); request.Headers.Add("api-key", Properties.Settings.Default.AzureSearchKey); using (System.Net.WebResponse response = await request.GetResponseAsync()) { using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream())) { string res = reader.ReadToEnd(); searchServiceResult = JsonConvert.DeserializeObject <dynamic>(res); } } } model.Count = searchServiceResult["@odata.count"]; model.FirstResult = Math.Min(Math.Max(skip + 1, 1), (model.Count / ResultsPerPage) * ResultsPerPage + 1); model.LastResult = Math.Min(model.FirstResult + ResultsPerPage - 1, model.Count); model.Query = query; var searchFacets = searchServiceResult["@search.facets"]; if (searchFacets != null) { foreach (var facet in facets) // iterate in the order we asked for { var facetHits = new List <SearchViewModel.FacetHit>(); string filteredFacet; var searchFacet = searchFacets[facet.Key]; if (searchFacet != null) { foreach (var facetHit in searchFacet) { string facetHitValue = facetHit["value"]; if (string.IsNullOrEmpty(facetHitValue)) { continue; } facetHits.Add(new SearchViewModel.FacetHit { Value = facetHitValue, Count = facetHit["count"] }); } } else if (query.Filters != null && query.Filters.TryGetValue(facet.Value, out filteredFacet)) { facetHits.Add(new SearchViewModel.FacetHit { Value = filteredFacet, Count = model.Count }); } bool isDateCollection = facet.Key == "collection"; model.FacetResults.Add(facet.Value, isDateCollection ? facetHits.OrderByDescending(f => f.Value) : facetHits.OrderByDescending(f => f.Count)); } } if (searchServiceResult.value != null) { foreach (var result in searchServiceResult.value) { string key = result["key"]; string postKind = result["releaseType"]; postKind = postKind.EndsWith("y") ? postKind.Substring(0, postKind.Length - 1) + "ies" : postKind + "s"; IEnumerable <object> titles = result["documentsHeadline"]; IEnumerable <object> headlines = result["documentsSubheadline"]; string translations = result["translations"]; bool hasTranslations = result["hasTranslations"]; string assetUrl = result["assetUrl"]; var date = (DateTimeOffset)DateTimeOffset.Parse(Convert.ToString(result["publishDateTime"])); model.Results.Add(new SearchViewModel.Result() { Title = System.Net.WebUtility.HtmlDecode(titles.FirstOrDefault().ToString()), Headline = System.Net.WebUtility.HtmlDecode(headlines?.FirstOrDefault().ToString()), Uri = NewsroomExtensions.GetPostUri(postKind.ToLower(), key), Description = result["summary"], HasMediaAssets = result["hasMediaAssets"], HasTranslations = translations != null && hasTranslations, PublishDate = DateTime.Parse(date.FormatDateLong()), ThumbnailUri = NewsroomExtensions.GetThumbnailUri(assetUrl), AssetUrl = result["assetUrl"], SocialMediaHeadline = result["socialMediaHeadline"] }); } } model.LastPage = Math.Min(Convert.ToInt32(Math.Ceiling(model.Count / (decimal)ResultsPerPage)), 100); #if !DEBUG } catch { model.Success = false; //TODO: Report exception message } #endif return(model); }
// GET api/values //public IEnumerable<master_record> Get() public async System.Threading.Tasks.Task <mmria.common.model.couchdb.case_view_response> Get ( int skip = 0, int take = 25, string sort = "by_date_created", string search_key = null, bool descending = false ) { /* * * http://localhost:5984/de_id/_design/sortable/_view/conflicts * * by_date_created * by_date_last_updated * by_last_name * by_first_name * by_middle_name * by_year_of_death * by_month_of_death * by_committe_review_date * by_created_by * by_last_updated_by * by_state_of_death * * */ string sort_view = sort != null?sort.ToLower() : "by_date_created"; switch (sort_view) { case "by_date_created": case "by_date_last_updated": case "by_last_name": case "by_first_name": case "by_middle_name": case "by_year_of_death": case "by_month_of_death": case "by_committe_review_date": case "by_created_by": case "by_last_updated_by": case "by_state_of_death": break; default: sort_view = "by_date_created"; break; } try { System.Text.StringBuilder request_builder = new System.Text.StringBuilder(); request_builder.Append(Program.config_couchdb_url); request_builder.Append($"/de_id/_design/sortable/_view/{sort_view}?"); if (string.IsNullOrWhiteSpace(search_key)) { if (skip > -1) { request_builder.Append($"skip={skip}"); } else { request_builder.Append("skip=0"); } if (take > -1) { request_builder.Append($"&limit={take}"); } if (descending) { request_builder.Append("&descending=true"); } } else { request_builder.Append("skip=0"); if (descending) { request_builder.Append("&descending=true"); } } string request_string = request_builder.ToString(); System.Net.WebRequest request = System.Net.WebRequest.Create(new Uri(request_string)); request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); mmria.common.model.couchdb.case_view_response case_view_response = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.case_view_response>(responseFromServer); if (string.IsNullOrWhiteSpace(search_key)) { return(case_view_response); } else { string key_compare = search_key.ToLower().Trim(new char [] { '"' }); mmria.common.model.couchdb.case_view_response result = new mmria.common.model.couchdb.case_view_response(); result.offset = case_view_response.offset; result.total_rows = case_view_response.total_rows; foreach (mmria.common.model.couchdb.case_view_item cvi in case_view_response.rows) { bool add_item = false; if (cvi.value.first_name != null && cvi.value.first_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.middle_name != null && cvi.value.middle_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.last_name != null && cvi.value.last_name.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.record_id != null && cvi.value.record_id.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.agency_case_id != null && cvi.value.agency_case_id.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.created_by != null && cvi.value.created_by.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.last_updated_by != null && cvi.value.last_updated_by.IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.date_of_death_month != null && cvi.value.date_of_death_month.HasValue && cvi.value.date_of_death_month.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.date_of_death_year != null && cvi.value.date_of_death_year.HasValue && cvi.value.date_of_death_year.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (cvi.value.date_of_committee_review != null && cvi.value.date_of_committee_review.HasValue && cvi.value.date_of_committee_review.Value.ToString().IndexOf(key_compare, StringComparison.OrdinalIgnoreCase) > -1) { add_item = true; } if (add_item) { result.rows.Add(cvi); } } result.total_rows = result.rows.Count; result.rows = result.rows.Skip(skip).Take(take).ToList(); return(result); } /* * < HTTP/1.1 200 OK * < Set-Cookie: AuthSession=YW5uYTo0QUIzOTdFQjrC4ipN-D-53hw1sJepVzcVxnriEw; * < Version=1; Path=/; HttpOnly * > ... * < * {"ok":true}*/ } catch (Exception ex) { Console.WriteLine(ex); } return(null); }
private async void OnBtnSndClicked(object sender, System.EventArgs e) { var lst = listView.ItemsSource as List <Receipt>; if (lst.Count == 0) { lblInfo.Text = "Нет чеков для отправки"; return; } string login = _loginField.Text; if (String.IsNullOrWhiteSpace(login)) { lblInfo.Text = "Введите логин"; return; } string passwd = _pwdField.Text; if (String.IsNullOrWhiteSpace(passwd)) { lblInfo.Text = "Введите пароль"; return; } lblInfo.Text = "Ожидание ответа сервера"; System.Net.WebRequest request = System.Net.WebRequest.Create(string.Format("{0}?login={1}&passwd={2}", "http://orv.org.ru/pricer/api/receipt/send.php", login, passwd)); request.Method = "POST"; string sName = ""; foreach (Receipt r in lst) { sName += r.Detail + ';'; } byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(sName); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; try { using (Stream dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } } catch (Exception ex) { lblInfo.Text = "Ошибка отправки " + ex.Message; } try { System.Net.WebResponse response = await request.GetResponseAsync(); using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { lblInfo.Text = reader.ReadToEnd(); } } response.Close(); } catch (Exception ex) { lblInfo.Text = "Ошибка получения ответа " + ex.Message; } }
public async Task <T> Download <T>(string inUrl, int retryTimesOnException = 1, int timeout_Header_InSconds = 3, int timeout_Content_InSconds = 10, Action <Exception> exHandler = null, System.Threading.CancellationToken?cToken = null, bool cacheEnabled = false, Action <List <string> > logHandler = null) { object r = null; int retryTime_Counter; retryTime_Counter = 1; List <string> logs = null; if (logHandler != null) { logs = new List <string>(); } while (retryTime_Counter <= retryTimesOnException) { try { if (cToken != null && cToken.Value.IsCancellationRequested) { break; } if (logs != null) { logs.Add($"Try - Start: {retryTime_Counter}"); } Download_Done = 0; Download_Length = null; try { System.Net.HttpWebRequest req_Header = System.Net.WebRequest.Create(inUrl) as System.Net.HttpWebRequest; req_Header.Method = "HEAD"; var req_Header_GetResponseAsync_Task = req_Header.GetResponseAsync(); if (await Task.WhenAny(req_Header_GetResponseAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Header_InSconds))) == req_Header_GetResponseAsync_Task) { using (System.Net.WebResponse resp_Header = req_Header_GetResponseAsync_Task.Result) { int resp_Header_ContentLength; if (resp_Header.Headers.AllKeys.Count(a1 => a1 == "Content-Length") > 0) { if (int.TryParse(resp_Header.Headers["Content-Length"], out resp_Header_ContentLength)) { Download_Length = resp_Header_ContentLength; if (logs != null) { logs.Add($"Download_Length - Try 1: {Download_Length}"); } } } } } else { throw new TimeoutException($"Time out (HEADER) on URL: {inUrl}"); } } catch (Exception ex1) { if (logs != null) { logs.Add($"DownloadLength - Try 1 Ex: {ex1.ToString()}"); } } // if (cToken != null && cToken.Value.IsCancellationRequested) { break; } // System.Net.HttpWebRequest hWReq = System.Net.WebRequest.Create(inUrl) as System.Net.HttpWebRequest; hWReq.Method = "GET"; hWReq.Accept = null; //if (!cacheEnabled) //{ // hWReq.Headers["Cache-Control"] = "no-cache"; // hWReq.Headers["Pragma"] = "no-cache"; //} // System.Net.WebResponse hWResp = null; System.Net.WebRequest hwReq_Typed = hWReq as System.Net.WebRequest; var hWResp_GetResponseAsync_Task = hwReq_Typed.GetResponseAsync(); if (await Task.WhenAny(hWResp_GetResponseAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Content_InSconds))) == hWResp_GetResponseAsync_Task) { if (cToken != null && cToken.Value.IsCancellationRequested) { break; } // hWResp = hWResp_GetResponseAsync_Task.Result; // Check for content length in GET header (if no success using HEAD method) if (Download_Length == null) { int resp_Header_ContentLength; if (hWResp.Headers.AllKeys.Count(a1 => a1 == "Content-Length") > 0) { if (int.TryParse(hWResp.Headers["Content-Length"], out resp_Header_ContentLength)) { Download_Length = resp_Header_ContentLength; if (logs != null) { logs.Add($"Download_Length - Try 2: {Download_Length}"); } } } } // Read the response into a Stream object. byte[] data_Native; using (System.IO.MemoryStream ms1 = new System.IO.MemoryStream()) { using (System.IO.Stream responseStream = hWResp.GetResponseStream()) { int bufferSize = 8192; byte[] buffer = new byte[bufferSize]; int bufferUsed; do { if (cToken != null && cToken.Value.IsCancellationRequested) { break; } // Task <int> responseStream_ReadAsync_Task; if (cToken != null) { responseStream_ReadAsync_Task = responseStream.ReadAsync(buffer, 0, bufferSize, cToken.Value); } else { responseStream_ReadAsync_Task = responseStream.ReadAsync(buffer, 0, bufferSize); } // if (await Task.WhenAny(responseStream_ReadAsync_Task, Task.Delay(TimeSpan.FromSeconds(timeout_Content_InSconds))) == responseStream_ReadAsync_Task) { bufferUsed = responseStream_ReadAsync_Task.Result; if (bufferUsed > 0) { ms1.Write(buffer, 0, bufferUsed); Download_Done += bufferUsed; if (Download_ProgressChanged != null) { Download_ProgressChanged(this, EventArgs.Empty); } } } else { throw new TimeoutException($"Time out (GET - Read) on URL: {inUrl}"); } } while (bufferUsed > 0); } // if (cToken != null && cToken.Value.IsCancellationRequested) { break; } // data_Native = ms1.ToArray(); ms1.Position = 0; // if (typeof(T) == typeof(string)) { string data; using (var reader = new System.IO.StreamReader(ms1)) { data = reader.ReadToEnd(); } r = data; } else if (typeof(T) == typeof(byte[])) { r = data_Native; } else if (typeof(T) == typeof(System.IO.MemoryStream)) { System.IO.MemoryStream ms2 = new System.IO.MemoryStream(data_Native); r = ms2; } } } else { throw new TimeoutException($"Time out (GET) on URL: {inUrl}"); } } catch (Exception ex) { if (logs != null) { logs.Add($"Try {retryTime_Counter} Ex: {ex.ToString()}"); } // r = null; if (exHandler != null) { exHandler(ex); } // var we = ex.InnerException as System.Net.WebException; if (we != null) { //var resp = we.Response as System.Net.HttpWebResponse; //if (resp != null) //{ // var code = resp.StatusCode; //} Debug.WriteLine("RespCallback Exception raised! Message:{0}" + we.Message); Debug.WriteLine("Status:{0}", we.Status); } else { Debug.WriteLine("Unknown Exception: {0}", ex.ToString()); } } // if (cToken != null && cToken.Value.IsCancellationRequested) { break; } // if (r != null) { break; } retryTime_Counter++; } // if (cToken != null) { cToken.Value.ThrowIfCancellationRequested(); } // if (logHandler != null) { logHandler(logs); } // return((T)r); }
protected async Task <SearchViewModel> Search(SearchViewModel.SearchQuery query, int first) { var model = new SearchViewModel(); int ResultsPerPage = 10; model.ResultsPerPage = ResultsPerPage; await LoadAsync(model); #if !DEBUG try { #endif model.Title = "Search"; //Google Search Protocol Reference - Request Format //http://www.google.com/support/enterprise/static/gsa/docs/admin/72/gsa_doc_set/xml_reference/request_format.html string requestPath = Properties.Settings.Default.GoogleSearchApplianceUri.ToString(); string searchText = ""; if (!string.IsNullOrEmpty(query.Text)) { searchText = query.Text; } else if (!string.IsNullOrEmpty(query.DateRange)) { searchText = "bc"; //Assume all stories have "bc" word in them. This is because daterange search by google appliance does not support daterange search without text query } requestPath += String.Format("&{0}={1}", "q", UrlEncoder.Default.Encode(searchText)); if (!string.IsNullOrEmpty(query.DateRange)) { requestPath += String.Format("+{0}:{1}", "daterange", query.DateRange); } requestPath += String.Format("&{0}={1}", "output", "xml_no_dtd"); requestPath += String.Format("&{0}={1}", "num", Convert.ToString(ResultsPerPage)); requestPath += String.Format("&{0}={1}", "requiredfields", "MBCTERMS%252EcontentType:News"); if (!string.IsNullOrEmpty(query.Sector)) { requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EsectorKeys", query.Sector); } if (!string.IsNullOrEmpty(query.Ministry)) { requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EministryKeys", query.Ministry); } if (!string.IsNullOrEmpty(query.NewsType)) { requestPath += String.Format(".{0}:{1}", "NEWSTERMS%252EcontentPath", query.NewsType); } //This should match page meta data date format, which is now "yyyy-mm" //if (query.YearMonth != null) // requestPath += String.Format("&{0}={1}", "partialfields", "DC%252Edate%252Eissued:" + query.YearMonth); requestPath += String.Format("&{0}={1}", "filter", "p"); requestPath += String.Format("&{0}={1}", "rc", 1); //requestPath += String.Format("&{0}={1}", "sitesearch", "news.gov.bc.ca"); requestPath += String.Format("&{0}={1}", "sort", "date:D:R:d1"); if (first > 1) { requestPath += String.Format("&{0}={1}", "start", first - 1); } System.Xml.Linq.XDocument xml; using (Profiler.StepStatic("Calling search.gov.bc.ca")) { System.Net.WebRequest request = System.Net.WebRequest.Create(requestPath); request.Proxy = null; using (System.Net.WebResponse response = await request.GetResponseAsync()) { using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream())) xml = System.Xml.Linq.XDocument.Load(reader, System.Xml.Linq.LoadOptions.None); } } model.Count = xml.Element("GSP").Element("RES") == null ? 0 : Convert.ToInt32(xml.Element("GSP").Element("RES").Element("M").Value); model.FirstResult = Math.Min(Math.Max(first, 1), (model.Count / ResultsPerPage) * ResultsPerPage + 1); model.LastResult = Math.Min(model.FirstResult + ResultsPerPage - 1, model.Count); model.Query = query; if (!string.IsNullOrEmpty(query.Ministry)) { model.Ministry = (await Repository.GetMinistryAsync(query.Ministry)).Index as Ministry; } if (!string.IsNullOrEmpty(query.Sector)) { model.Sector = (await Repository.GetSectorAsync(query.Sector)).Index as Sector; } if (!string.IsNullOrEmpty(query.DateRange)) { var dates = query.DateRange.Replace("..", "+").Split('+'); if (dates.Count() == 2) { model.DateRangeText = string.Format("{0:MMMM d, yyyy} to {1:MMMM d, yyyy}", DateTime.Parse(dates[0]), DateTime.Parse(dates[1])); } } else { model.DateRangeText = string.Format("{0} to {1}", "March 12, 2011", "Present"); } var results = xml.Element("GSP").Element("RES"); if (results != null) { var result = results.Element("R"); while (result != null) { if (result.Name == "R") { string url = result.Element("U").Value; string title = result.Element("T") == null ? "[no title]" : result.Element("T").Value.Replace(" | BC Newsroom", "").Replace(" | BC Gov News", "").Replace(" | BC <b>...</b>", ""); string description = result.Element("S").Value.Replace("�", "").Replace("<br>", "<br />").Replace("<br />", " "); string size = result.Element("HAS").Element("C") == null ? "" : result.Element("HAS").Element("C").Attribute("SZ").Value; string localUrl = url.Replace("http://", "").Replace("https://", ""); Post post = null; //TODO: Use result["CRAWLDATE"] to set Date try { if (url.StartsWith("https://news.gov.bc.ca/")) { string[] urlFragments = url.Split("/"); string postKind = urlFragments[urlFragments.Length - 2]; if (postKind == "stories" || postKind == "releases" || postKind == "factsheets" || postKind == "updates") { post = await Repository.GetPostAsync(urlFragments[urlFragments.Length - 1]); } } } // handle cases where the search has a result not in our database. catch (Exception) { } var searchResult = new Models.SearchViewModel.Result(); searchResult.Title = System.Net.WebUtility.HtmlDecode(title.Replace("<b>", "").Replace("</b>", "")); searchResult.Uri = new Uri(url.Replace("https://news.gov.bc.ca/", Properties.Settings.Default.NewsHostUri.ToString())); searchResult.UriLabel = localUrl; searchResult.Description = ""; searchResult.HasMediaAssets = false; if (post != null) { searchResult.Title = post.Headline(); if (!string.IsNullOrEmpty(post.Summary)) { searchResult.Description = post.Summary; } searchResult.HasMediaAssets = post.HasMediaAssets == true; searchResult.PublishDate = post.PublishDate.HasValue ? post.PublishDate.Value : DateTimeOffset.MinValue; searchResult.ThumbnailUri = post.GetThumbnailUri(); } else { if (searchResult.Title.EndsWith(" | BC Gov News")) { searchResult.Title = searchResult.Title.Substring(0, searchResult.Title.Length - " | BC Gov News".Length); } if (searchResult.Title.EndsWith(" | BC ...")) { searchResult.Title = searchResult.Title.Substring(0, searchResult.Title.Length - " | BC ...".Length); } } model.Results.Add(searchResult); } result = result.ElementsAfterSelf().FirstOrDefault(); } } model.LastPage = Math.Min(Convert.ToInt32(Math.Ceiling((decimal)model.Count / (decimal)ResultsPerPage)), 100); #if !DEBUG } catch { model.Success = false; //TODO: Report exception message } #endif return(model); }
public async System.Threading.Tasks.Task <mmria.common.model.couchdb.document_put_response> Post() { //bool valid_login = false; mmria.common.metadata.app metadata = null; string object_string = null; mmria.common.model.couchdb.document_put_response result = new mmria.common.model.couchdb.document_put_response(); try { System.IO.Stream dataStream0 = await this.Request.Content.ReadAsStreamAsync(); // Open the stream using a StreamReader for easy access. //dataStream0.Seek(0, System.IO.SeekOrigin.Begin); System.IO.StreamReader reader0 = new System.IO.StreamReader(dataStream0); // Read the content. string temp = reader0.ReadToEnd(); metadata = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.metadata.app>(temp); //System.Dynamic.ExpandoObject json_result = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Dynamic.ExpandoObject>(result, new Newtonsoft.Json.Converters.ExpandoObjectConverter()); //string metadata = DecodeUrlString(temp); } catch (Exception ex) { Console.WriteLine(ex); } try { Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings(); settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; object_string = Newtonsoft.Json.JsonConvert.SerializeObject(metadata, settings); string metadata_url = this.get_couch_db_url() + "/metadata/" + metadata._id; System.Net.WebRequest request = System.Net.WebRequest.Create(new System.Uri(metadata_url)); request.Method = "PUT"; request.ContentType = "application/json"; request.ContentLength = object_string.Length; request.PreAuthenticate = false; if (this.Request.Headers.Contains("Cookie") && this.Request.Headers.GetValues("Cookie").Count() > 0) { string[] cookie_set = this.Request.Headers.GetValues("Cookie").First().Split(';'); for (int i = 0; i < cookie_set.Length; i++) { string[] auth_session_token = cookie_set[i].Split('='); if (auth_session_token[0].Trim() == "AuthSession") { request.Headers.Add("Cookie", "AuthSession=" + auth_session_token[1]); request.Headers.Add("X-CouchDB-WWW-Authenticate", auth_session_token[1]); break; } } } using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(request.GetRequestStream())) { try { streamWriter.Write(object_string); streamWriter.Flush(); streamWriter.Close(); System.Net.WebResponse response = await request.GetResponseAsync(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); result = Newtonsoft.Json.JsonConvert.DeserializeObject <mmria.common.model.couchdb.document_put_response>(responseFromServer); if (response.Headers["Set-Cookie"] != null) { string[] set_cookie = response.Headers["Set-Cookie"].Split(';'); string[] auth_array = set_cookie[0].Split('='); if (auth_array.Length > 1) { string auth_session_token = auth_array[1]; result.auth_session = auth_session_token; } else { result.auth_session = ""; } } //System.Threading.Tasks.Task.Run( new Action(()=> { var f = new GenerateSwaggerFile(); System.IO.File.WriteAllText(Program.config_file_root_folder + "/api-docs/api.json", f.generate(metadata)); })); } catch (Exception ex) { Console.WriteLine(ex); } } if (!result.ok) { } } catch (Exception ex) { Console.WriteLine(ex); } return(result); }