using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace IStation.BLL { public class TideHelper { static public List GetByDayRange( Model.eTideSouce source, DateTime startday, DateTime endday, out string error) { if (!ServiceParas.IsRemote) { return IStation.Common.TideHelper.GetByDayRange(source, startday, endday,out error); } string apiServiceUrl = System.Configuration.ConfigurationManager.AppSettings["ApiServiceUrl"]; if (string.IsNullOrEmpty(apiServiceUrl)) { error = "ApiServiceUrl 为空"; return null; } string url = string.Format(@"{0}/Tide/GetByDayRange?source={1}&startday={2}&endday={3}", apiServiceUrl,(int)source, startday.ToString("yyyy-MM-dd"), endday.ToString("yyyy-MM-dd")); //先根据用户请求的uri构造请求地址 //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //string ContentType = "application/json"; string Accept = "application/json"; //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); //把用户传过来的数据转成“UTF-8”的字节流 //byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData); myRequest.Method = "GET"; //myRequest.Accept = "application/json"; //myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded myRequest.AutomaticDecompression = DecompressionMethods.GZip; myRequest.Accept = Accept; //myRequest.ContentType = ContentType; myRequest.ContentType = "application/json; charset=UTF-8"; //myRequest.ContentLength = buf.Length; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //myRequest.Headers.Add("content-type", "application/json"); //myRequest.Headers.Add("accept-encoding", "gzip"); //myRequest.Headers.Add("accept-charset", "utf-8"); //发送请求 //Stream stream = myRequest.GetRequestStream(); //stream.Write(buf, 0, buf.Length); //stream.Close(); //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法 string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 if (string.IsNullOrEmpty(returnData)) { myResponse.Close(); error = "利用StreamReader就可以从响应内容从头读到尾"; return null; } var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize>>(returnData); reader.Close(); myResponse.Close(); error = null; return ret.Data; } static public List GetByDay ( Model.eTideSouce source, DateTime day, out string error) { if (!ServiceParas.IsRemote) { return IStation.Common.TideHelper.GetByDay(source, day, out error); } string apiServiceUrl = System.Configuration.ConfigurationManager.AppSettings["ApiServiceUrl"]; if (string.IsNullOrEmpty(apiServiceUrl)) { error = "ApiServiceUrl 为空"; return null; } string url = string.Format(@"{0}/Tide/GetByDay?source={1}&day={2} ", apiServiceUrl, (int)source, day.ToString("yyyy-MM-dd") ); //先根据用户请求的uri构造请求地址 //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //string ContentType = "application/json"; string Accept = "application/json"; //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); //把用户传过来的数据转成“UTF-8”的字节流 //byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData); myRequest.Method = "GET"; //myRequest.Accept = "application/json"; //myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded myRequest.AutomaticDecompression = DecompressionMethods.GZip; myRequest.Accept = Accept; //myRequest.ContentType = ContentType; myRequest.ContentType = "application/json; charset=UTF-8"; //myRequest.ContentLength = buf.Length; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //myRequest.Headers.Add("content-type", "application/json"); //myRequest.Headers.Add("accept-encoding", "gzip"); //myRequest.Headers.Add("accept-charset", "utf-8"); //发送请求 //Stream stream = myRequest.GetRequestStream(); //stream.Write(buf, 0, buf.Length); //stream.Close(); //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法 string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 if (string.IsNullOrEmpty(returnData)) { myResponse.Close(); error = "利用StreamReader就可以从响应内容从头读到尾"; return null; } var ret = (new System.Web.Script.Serialization.JavaScriptSerializer()).Deserialize>>(returnData); reader.Close(); myResponse.Close(); error = null; return ret.Data; } } }