C#工作笔记
2016-07-27 12:40
357 查看
没想到一个Java后端开发还要负责C#桌面程序,我感觉有点方。不过方归方,活还是要干的。简单记录下学到的一些知识点。
1.引用API函数
2.对象序列化,因为要对接Java的rest接口,所以需要将对象序列化转json
3.发送POST请求
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接口,所以需要将对象序列化转json
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; }
相关文章推荐
- C#集合--Dictionary
- c#——Winform DatagridView 扩展支持combobox列自定义DropDownStyle
- C#中的异步委托
- C# ref与out
- C#向线程中传递多个参数的解决方法(两种)
- C#创建线程带参数的方法
- 泛型介绍(C# 编程)
- C#往线程里传递参数的方法小结
- C#之创建Xml
- RSLinx与C#通信错误
- 【C# DateTime】如何一次性修改DateTime的默认ToString格式
- 基于C#的Windows定时关机系统的设计
- 如何:复制、删除和移动文件和文件夹(C# 编程)
- c#中的序列化
- C# System.Threading.Timer 使用方法
- C#图片压缩类
- DateHelper.cs日期时间操作辅助类C#
- c#基础入门(3)——异常、三元表达式、转义符、类型转换
- C#字符串截取
- C#中的强类型说明