private void HttpTestThread(object arg) { try { string strUrl = GlobalDataInterface.ServerURL + "CommunicationTest?DeviceNumber=" + GlobalDataInterface.DeviceNumber; TimeoutWebClient _dbMyClient = new TimeoutWebClient(3000, new IPEndPoint(IPAddress.Parse(GlobalDataInterface.ServerBindLocalIP), 0)); _dbMyClient.Encoding = System.Text.Encoding.UTF8; string result = _dbMyClient.DownloadString(strUrl); JObject jo = (JObject)JsonConvert.DeserializeObject(result); string reMessage = jo["message"].ToString(); string reResult = jo["result"].ToString(); string reStatus = jo["status"].ToString(); string reStatusCode = jo["statusCode"].ToString(); if (reResult.Contains("通讯成功") && reMessage.Contains(GlobalDataInterface.DeviceNumber)) { #region 显示日志 if (UpdateDownloadLogEvent != null) { string strLog = "通讯测试成功!"; UpdateDownloadLogEvent(strLog); log.WriteHttpLog(strLog); } #endregion //MessageBox.Show("通讯测试成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { #region 显示日志 if (UpdateDownloadLogEvent != null) { string strLog = "通讯测试失败!"; UpdateDownloadLogEvent(strLog); log.WriteHttpLog(strLog); } #endregion //MessageBox.Show("通讯测试失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { #if REALEASE GlobalDataInterface.WriteErrorInfo("DataDownloadForm中函数btnHttpTest_Click出错" + ex); #endif #region 显示日志 if (UpdateDownloadLogEvent != null) { string strLog = "通讯测试失败!"; UpdateDownloadLogEvent(strLog); log.WriteHttpLog(strLog); } #endregion //MessageBox.Show("通讯测试失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
//POST方法(httpWebRequest) /// <summary> /// 通过WebClient类Post数据到远程地址,需要Basic认证; /// 调用端自己处理异常 /// </summary> /// <param name="uri"></param> /// <param name="paramStr">name=张三&age=20</param> /// <param name="encoding">请先确认目标网页的编码方式</param> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password) { if (encoding == null) { encoding = Encoding.UTF8; } string result = string.Empty; TimeoutWebClient wc = new TimeoutWebClient(2000, new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0)); // 采取POST方式必须加的Header wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); byte[] postData = encoding.GetBytes(paramStr); if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)) { wc.Credentials = GetCredentialCache(uri, username, password); wc.Headers.Add("Authorization", GetAuthorization(username, password)); } byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流 return(encoding.GetString(responseData)); // 解码 }