C#工做筆記

沒想到一個Java後端開發還要負責C#桌面程序,我感受有點方。不過方歸方,活仍是要乾的。簡單記錄下學到的一些知識點。json

 

1.引用API函數後端

namespace Demo
{
    class MyUtil
    {
        [DllImport("user32.dll", EntryPoint = "keybd_event")]
        public static extern void keybd_event(
            byte bVk,       //虛擬鍵值  
            byte bScan,     // 通常爲0  
            int dwFlags,    //這裏是整數類型 0 爲按下,2爲釋放  
            int dwExtraInfo //這裏是整數類型 通常狀況下設成爲0  
        ); 
        
        public static void sendF9()
        {
            keybd_event((byte)Keys.F9, 0, 0, 0);
            keybd_event((byte)Keys.F9, 0, 2, 0);
        }
    }
}

 

2.對象序列化,由於要對接Java的rest接口,因此須要將對象序列化轉jsonapp

using System.Runtime.Serialization;

namespace Demo
{
    [DataContract]
    class ServiceError
    {
        [DataMember]
        public string errCode { get; set; }

        [DataMember]
        public string errDesc { get; set; }
    }
}
        /// <summary>
        /// 將對象轉化爲JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ObjectToJson(object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);
            byte[] dataBytes = new byte[stream.Length];
            stream.Position = 0;
            stream.Read(dataBytes, 0, (int)stream.Length);
            return Encoding.UTF8.GetString(dataBytes);
        }
        /// <summary>
        /// 將Json字符串轉化成對象
        /// </summary>
        /// <typeparam name="T">轉換的對象類型</typeparam>
        /// <param name="output">json字符串</param>
        /// <returns></returns>
        public static T ToClass<T>(string output)
        {
            object result = null;
            DataContractJsonSerializer outDs = new DataContractJsonSerializer(typeof(T));
            using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
            {
                try
                {
                    result = outDs.ReadObject(outMs);
                }
                catch (SerializationException ex)
                {
                    Console.WriteLine(ex.TargetSite + ": " + ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
            }
            return (T)result;
        }

 

3.發送POST請求函數

        /// <summary>  
        /// POST請求與獲取結果  
        /// </summary>  
        public static string HttpPost(string Url, string postDataStr)
        {
            Console.WriteLine("HttpPost: postDataStr = " + postDataStr);
            string retVal = string.Empty;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/json";
                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
                writer.Write(postDataStr);
                writer.Flush();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string encoding = response.ContentEncoding;
                if (encoding == null || encoding.Length < 1)
                {
                    encoding = "UTF-8"; //默認編碼  
                }
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
                retVal = reader.ReadToEnd();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.TargetSite + ": " + ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            Console.WriteLine("HttpPost: retVal = " + retVal);
            return retVal;
        }
相關文章
相關標籤/搜索