沒想到一個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; }