using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net;
|
using System.Text;
|
using System.Threading.Tasks;
|
using static System.Net.WebRequestMethods;
|
|
namespace IStation.BLL
|
{
|
public class PredictWater
|
{
|
// string apiServiceUrl = "http://47.100.245.85:8188";
|
|
/// <summary>
|
/// 获取预测水量 (平均数)
|
/// </summary>
|
/// <param name="StartTime"></param> 开始时间
|
/// <param name="EndTime"></param> 结束时间
|
/// <param name="days"></param> 取前多少天的数据作为预测数据
|
/// <param name="error"></param>
|
/// <returns></returns>
|
public List<Model.SSAData> GetAnaWaterOneDay(DateTime StartTime, DateTime EndTime, int days, out string error)
|
{
|
string ApiPredictUrl = System.Configuration.ConfigurationManager.AppSettings["ApiPredictUrl"];
|
if (string.IsNullOrEmpty(ApiPredictUrl))
|
{
|
error = "ApiServiceUrl 为空";
|
return null;
|
}
|
string url = string.Format(@"{0}/Predict/user/TimeBolckWaterAna?starttime={1}&endtime={2}&days={3}", ApiPredictUrl, StartTime, EndTime, days);
|
string Accept = "application /json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
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;
|
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<IStation.Dto.ApiResult<List<Model.SSAData>>>(returnData);
|
reader.Close();
|
myResponse.Close();
|
error = null;
|
return ret.Data;
|
}
|
|
/// <summary>
|
/// 获取预测水量 (算法)
|
/// </summary>
|
/// <param name="StartTime"></param> 开始时间
|
/// <param name="EndTime"></param> 结束时间
|
/// <param name="days"></param> 取前多少天的数据作为预测数据
|
/// <param name="error"></param>
|
/// <returns></returns>
|
public List<Model.SSAData> GetPredictWaterOneDay(DateTime StartTime, DateTime EndTime, int days, out string error)
|
{
|
string ApiPredictUrl = System.Configuration.ConfigurationManager.AppSettings["ApiPredictUrl"];
|
if (string.IsNullOrEmpty(ApiPredictUrl))
|
{
|
error = "ApiServiceUrl 为空";
|
return null;
|
}
|
string url = string.Format(@"{0}/Predict/user/TimeBolckWater?starttime={1}&endtime={2}&days={3}", ApiPredictUrl, StartTime, EndTime, days);
|
string Accept = "application /json";
|
//创建Web访问对象
|
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
|
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;
|
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<IStation.Dto.ApiResult<List<Model.SSAData>>>(returnData);
|
reader.Close();
|
myResponse.Close();
|
error = null;
|
return ret.Data;
|
}
|
}
|
}
|