C#访问服务器工具类HttpUtil(上位机访问服务器)

C#上位机开发,客户要求实现物料节点管控,物料流程可追溯。要提供上料确认(确认物料到达本节点,未到达在本工站作料),数据上传(作料完成物料信息上传节点)。

一般还会要求设备报站(机台权限管控,非入网机台无权限上传)。

关于数据上传这一部分实在是做吐了,尤其是改造机台那叫一个难受。唉,把HttpUtil放上来,记录一下

三个点。1.请求类,

        /// <summary>
        /// 网络访问
        /// </summary>
        /// <param name="url">访问地址</param>
        /// <param name="sendWay">访问方式</param>
        /// <param name="contentType">访问资源类型</param>
        /// <param name="postDataStr">发送内容</param>
        /// <returns></returns>
        public static string HttpPostOrGet(string url, string sendWay, string contentType, string postDataStr)
        {
            string returnString = string.Empty;

            HttpWebRequest request = null;//请求
            HttpWebResponse response;//响应
            Byte[] byteData = postDataStr == null ? new byte[] { } : Encoding.UTF8.GetBytes(postDataStr); //如果发送内容不为空转换为UTF-8格式
            string method = sendWay.ToUpper();//访问方式转换为大写格式
            try
            {
                switch (method)//判断访问方式
                {
                    case "POST"://加密提交
                        request = (HttpWebRequest)WebRequest.Create(url);//创建请求                    
                        request.Method = method;//传输方式
                                                //"application/json" 资源类型:JSON字符串  "application/x-www-form-urlencoded" 表单数据(键值对)
                        request.ContentType = contentType;//资源类型
                        request.ContentLength = byteData.Length;
                        using (Stream requestStream = request.GetRequestStream())//获取请求流
                        {
                            requestStream.Write(byteData, 0, byteData.Length);//向服务器写字节流
                        }
                        break;
                    case "GET"://明文提交
                        request = (HttpWebRequest)WebRequest.Create(url + (postDataStr == null ? "" : "?") + postDataStr);
                        request.Method = method;
                        break;
                }

                response = (HttpWebResponse)request.GetResponse();//获取服务器响应信息

                HttpStatusCode code = response.StatusCode;  //ok
                string stute = code.ToString();
                int id = (int)code;


                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                    returnString = reader.ReadToEnd();
                }
            }
            catch (WebException ex)
            {
                Trace.WriteLine(string.Format("{0},{1},{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                "Error", ex.Message));
               
            }

            return returnString;
        }

2.对象转Json,

        /// <summary>
        /// 将对象转JSON
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="transFormationString">实例化对象,包含所需的属性值</param>
        /// <returns></returns>
        public static string ChangeFormJson<T>(T transFormationString)
        {
            Console.WriteLine(transFormationString.GetType());

            string returnString = null;
            try
            {
                returnString = JSS.Serialize(transFormationString);
            }
            catch (Exception ex)
            {
                returnString = ex.Message;
                // WriteLogHelper.WriteOrCreateLog(null, ex.Message.ToString());
            }

            return returnString;
        }

3.json转对象

        /// <summary>
        /// Json转对象
        /// </summary>
        /// <typeparam name="Books">对象类型</typeparam>
        /// <param name="jsonString">json字符串</param>
        /// <returns></returns>
        public static T ChangeFormObject<T>(string jsonString)
        {
            Console.WriteLine(jsonString.GetType().Name);
            T result = default(T); //引用类型呢默认null,值类型默认0
            try
            {
                result = JSS.Deserialize<T>(jsonString);
            }
            catch (Exception ex)
            {
                //WriteLogHelper.WriteOrCreateLog(null, ex.Message.ToString());
            }
            return result;

        }

把2,3点结合了一下,也放上来


        /// <summary>
        /// value==null ? 实例化对象转json string:json string转实例化对象;
        /// (new对象,null) or (new对象,string)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="transFormation">实例化对象</param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static object ChangeType<T>(T transFormation, string value)
        {
            object result = null;
            try
            {
                if (value != null)
                    result = JSS.Deserialize<T>(value);
                
                else
                    result = JSS.Serialize(transFormation);

                
            }
            catch (Exception ex)
            {
                result = ex.Message;
                Trace.WriteLine(string.Format("{0},{1},{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                "Error", ex.Message));
            }
            return result;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值