////// HTTP Post请求 /// /// HTTP接口Url,不带协议和端口,如/artemis/api/resource/v1/org/advance/orgList /// 请求参数 /// 请求超时时间,单位:秒 ///请求结果 public static byte[] HttpPost(bool _isHttps, string _ip, string _port, string uri, string body, int timeout) { Dictionaryheader = new Dictionary (); // 初始化请求:组装请求头,设置远程证书自动验证通过 //initRequest(header, uri, body, true); // build web request object StringBuilder sb = new StringBuilder(); sb.Append(_isHttps ? "https://" : "http://").Append(_ip).Append(":").Append(_port.ToString()).Append(uri); // 创建POST请求 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(sb.ToString()); req.KeepAlive = false; req.ProtocolVersion = HttpVersion.Version11; req.AllowAutoRedirect = false; // 不允许自动重定向 req.Method = "POST"; req.Timeout = timeout * 1000; // 传入是秒,需要转换成毫秒 req.ContentType = "application/json"; //req.Accept = header["Accept"]; //req.ContentType = header["Content-Type"]; //foreach (string headerKey in header.Keys) //{ // if (headerKey.Contains("x-ca-")) // { // req.Headers.Add(headerKey + ":" + header[headerKey]); // } //} if (!string.IsNullOrWhiteSpace(body)) { byte[] postBytes = Encoding.UTF8.GetBytes(body); req.ContentLength = postBytes.Length; Stream reqStream = null; try { reqStream = req.GetRequestStream(); reqStream.Write(postBytes, 0, postBytes.Length); reqStream.Close(); } catch (WebException e) { if (reqStream != null) { reqStream.Close(); } return null; } } HttpWebResponse rsp = null; try { rsp = (HttpWebResponse)req.GetResponse(); if (HttpStatusCode.OK == rsp.StatusCode) { Stream rspStream = rsp.GetResponseStream(); StreamReader sr = new StreamReader(rspStream); string strStream = sr.ReadToEnd(); long streamLength = strStream.Length; byte[] response = System.Text.Encoding.UTF8.GetBytes(strStream); rsp.Close(); return response; } else if (HttpStatusCode.Found == rsp.StatusCode || HttpStatusCode.Moved == rsp.StatusCode) // 302/301 redirect { try { string reqUrl = rsp.Headers["Location"].ToString(); // 如需要重定向URL,请自行修改接口返回此参数 rsp.Close(); WebRequest wreq = WebRequest.Create(reqUrl); rsp = (HttpWebResponse)wreq.GetResponse(); Stream rspStream = rsp.GetResponseStream(); long streamLength = rsp.ContentLength; int offset = 0; byte[] response = new byte[streamLength]; while (streamLength > 0) { int n = rspStream.Read(response, offset, (int)streamLength); if (0 == n) { break; } offset += n; streamLength -= n; } return response; } catch (Exception e) { rsp.Close(); return null; } } rsp.Close(); } catch (WebException e) { if (rsp != null) { rsp.Close(); } } return null; }
//接口需要的参数–SessionID,loginID,eSystemCode
public string GetModelCurTime(string sessionID,string loginID,string eSystemCode)
{
string result = "";
TData tj = new TData();
ApiModel reques = new ApiModel();
reques.sessionID = sessionID;
reques.loginID = loginID;
reques.eSystemCode = eSystemCode;
string uri = "/checkMenuRight";//访问的接口名称
byte[] response = HttpPost(false, "内网ip地址", "端口号", uri, JsonConvert.SerializeObject(reques), 30);
if (null == response)
{
//console.writeline(uri + " : post fail");
}
else
{
string responseStr = System.Text.Encoding.UTF8.GetString(response);
//hkresponsepage hkresponsepage = jsonconvert.deserializeobject>(responsestr);
JObject jo = (JObject)JsonConvert.DeserializeObject(responseStr);
//var date = jsonconvert.deserializeobject(jsonconvert.serializeobject(jo["retcontent"]));
// ["$userid"].tostring();
// tj.data = response;
result = jo["body"]["retContent"]["username"].ToString();
//dt = gettimespan(convert.toint64(date));
//result = responsestr;
}
return result;
}



