110,529
社区成员
发帖
与我相关
我的任务
分享
//获取请求
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
/// <summary>
/// 网络接口调用成功返回路径,用户凭手机号登录即可获取二维码
/// </summary>
/// <param name="mobile">手机号</param>
/// <param name="communityNo">集群编号</param>
/// <param name="buildNo">楼栋号</param>
/// <param name="floorNo">楼层号</param>
/// <param name="roomNo">房间号</param>
/// <param name="startTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="areaCode">手机区号</param>
/// <returns></returns>
public Dictionary<string, object> GetLink(string mobile, string communityNo, string buildNo, string floorNo, string roomNo, string startTime, string endTime, string areaCode)
{
Dictionary<string, object> initError = paramCheckRest();
if (initError != null)
{
return initError;
}
initError = paramCheckAccount();
if (initError != null)
{
return initError;
}
try
{
string date = DateTime.Now.ToString("yyyyMMddhhmmss");
//构建url内容
string sigStr = MD5Encrypt(m_account + m_token + date).ToUpper();
string uriStr = string.Format("https://{0}:{1}/?c=Qrcode&a=getLink&sig={2}", m_restAddress, m_restPort, sigStr);
Uri address = new Uri(uriStr);
WriteLog("Request url =" + uriStr);
//创建网络请求
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
setCertificateValidationCallBack();
//构建Head
request.Method = "POST";
//增加下面两个属性即可
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version11;
//ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
Encoding myEncoding = Encoding.GetEncoding("utf-8");
byte[] myByte = myEncoding.GetBytes(m_account + ":" + date);
string authStr = Convert.ToBase64String(myByte);
request.Headers.Add("Authorization", authStr);
//构建Body
StringBuilder data = new StringBuilder();
if (m_bodyType == EBodyType.EType_XML)
{
request.Accept = "application/xml";
request.ContentType = "application/x-www-form-urlencode";
data.Append("<?xml version='1.0' encoding='utf-8'?><request>");
data.Append("<mobile>").Append(mobile).Append("</mobile>");
data.Append("<communityNo>").Append(communityNo).Append("</communityNo>");
data.Append("<buildNo>").Append(buildNo).Append("</buildNo>");
data.Append("<floorNo>").Append(floorNo).Append("</floorNo>");
data.Append("<roomNo>").Append(roomNo).Append("</roomNo>");
data.Append("<startTime>").Append(startTime).Append("</startTime>");
data.Append("<endTime>").Append(endTime).Append("</endTime>");
data.Append("<areaCode>").Append(areaCode).Append("</areaCode>");
data.Append("</request>");
}
else
{
request.Accept = "application/json";
request.ContentType = "application/x-www-form-urlencode";
data.Append("{");
data.Append("\"mobile\":\"").Append(mobile).Append("\",");
data.Append("\"communityNo\":\"").Append(communityNo).Append("\",");
data.Append("\"buildNo\":\"").Append(buildNo).Append("\",");
data.Append("\"floorNo\":\"").Append(floorNo).Append("\",");
data.Append("\"roomNo\":\"").Append(roomNo).Append("\",");
data.Append("\"startTime\":\"").Append(startTime).Append("\",");
data.Append("\"endTime\":\"").Append(endTime).Append("\",");
data.Append("\"areaCode\":\"").Append(areaCode).Append("\"");
data.Append("}");
}
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
WriteLog("request Body = " + data.ToString());
//开始请求
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
//获取请求
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
//Get the response stram
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseStr = reader.ReadToEnd();
WriteLog("response Body = " + responseStr);
Log.Write("request Body = " + responseStr, Log.LogType.Error, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name);
if (responseStr != null && responseStr.Length > 0)
{
Dictionary<string, object> responseResult = new Dictionary<string, object>();
if (m_bodyType == EBodyType.EType_XML)
{
XmlDocument resultXml = new XmlDocument();
resultXml.LoadXml(responseStr);
XmlNodeList nodeList = resultXml.SelectSingleNode("Response").ChildNodes;
foreach (XmlNode item in nodeList)
{
if (item.Name == "status")
{
responseResult["status"] = item.InnerText;
}
else if (item.Name == "info")
{
responseResult["info"] = item.InnerText;
}
else if (item.Name == "no")
{
responseResult["no"] = item.InnerText;
}
WriteLog("response item.innerText = " + item.InnerText);
}
return responseResult;
}
else
{
//解析JSON数据格式
JObject JsonObject = JObject.Parse(responseStr);
WriteLog("response status = " + JsonObject["status"].ToString());
WriteLog("response info = " + JsonObject["info"].ToString());
responseResult["status"] = JsonObject["status"].ToString();
responseResult["info"] = JsonObject["info"].ToString();
responseResult["no"] = JsonObject["no"].ToString();
return responseResult;
}
}
return new Dictionary<string, object> { { "status", 4003 }, { "info", "无返回" }, { "data", null } };
}
}
catch (Exception e)
{
throw e;
}
}