Пример #1
0
        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);
            }
        }
Пример #2
0
        //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));                   // 解码
        }