C#与C#接口对接,C#与Java的接口对接(序列化与反序列化)——(二)
2016-08-26 11:06
387 查看
发送数据
1.建立json请求类/// <summary> /// Json请求类 /// </summary> public class HttpJsonRquest { private static string token = ""; private static string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; /// <summary> /// Json请求,通过POST方法将json数据发送到指定的url,返回json字符串 /// </summary> /// <param name="url">请求地址</param> /// <param name="jsonData">json数据</param> /// <returns></returns> public static string Request(string url, string jsonData) { ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); var httpRequest = (HttpWebRequest)HttpWebRequest.Create(url); //httpRequest.CookieContainer = new CookieContainer(); httpRequest.ProtocolVersion = HttpVersion.Version11; httpRequest.Method = "POST"; httpRequest.Accept = "application/json"; httpRequest.UserAgent = DefaultUserAgent; httpRequest.Headers.Add("Authorization", "bearer " + token.Trim()); //httpRequest.ContentType = "application/json"; //X509Certificate objx509 = new X509Certificate("c:\\test.cer"); //httpRequest.ClientCertificates.Add(objx509); Encoding encoding = Encoding.GetEncoding("utf-8"); byte[] data; #region 使用Json格式 httpRequest.ContentType = "application/json"; data = encoding.GetBytes(jsonData); #endregion using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } try { var response = httpRequest.GetResponse(); var respStream = response.GetResponseStream(); string result = null; using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream)) { result = reader.ReadToEnd(); } return result; } catch (WebException ex) { throw ex; } catch(Exception ex) { throw ex; } }
2.建立传递数据的模型类
public class PushAlarmProcessStatus { /// <summary> /// /// </summary> [DataMember(Name = "id")] public int Id { get; set; } /// <summary> /// /// </summary> [DataMember(Name = "alertmessage")] public string AlertMessage { get; set; } /// <summary> /// /// </summary> [DataMember(Name = "operator")] public string Operator { get; set; } /// <summary> /// /// </summary> [DataMember(Name = "operatdate")] public DateTime OperatDate { get; set; } /// <summary> /// /// </summary> [DataMember(Name = "tastcontext")] public string TastContext { get; set; } /// <summary> /// /// </summary> [DataMember(Name = "flowstate")] public int FlowState { get; set; } }
3.开始传递数据
public bool ExternelPushAlarmProcessStatus(PushAlarmProcessStatus pushModel) { //TODO:需要修改成接口的URL地址 string baseUrl = Properties.Settings.Default.ExternelPushBaseUrl; JsonRequestModel<PushAlarmProcessStatus> requestData = new JsonRequestModel<PushAlarmProcessStatus>(); requestData.Datas = new List<PushAlarmProcessStatus> { pushModel }; requestData.ApiKey = "aaa"; try { string jsonString = UtilityCommon.JsonSerializer.Serializer(requestData); string url = string.Format("{0}/Handlers/AlarmProcess.ashx?jsonStr={1}", baseUrl, jsonString); var result = UtilityWeb.HttpJsonRquest.Request(url, string.Empty); JsonResponseDataModel<string> jsonResult = UtilityCommon.JsonSerializer.Deserializer<JsonResponseDataModel<string>>(result); return jsonResult.Success; } catch { throw new SiteException("访问远程服务器异常"); } }
相关文章推荐
- C#与C#接口对接,C#与Java的接口对接(序列化与反序列化)——(一)
- (JAVA子类引用指象父类引用)JAVA克隆对象,包括父类属性,无需实现序列化接口
- C#接口和JAVA的区别?
- C# 接口 与 java 接口
- 理解Java对象序列化——Serializable接口
- Java的Serializable序列化接口的readObject和writeObject方法
- 用C#接口实现通用的文本数据序列化
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义
- java中实现序列化serializable接口的问题
- 揭开JAVA序列化接口的神秘面纱
- java中的序列化接口
- 用WOX来序列化Java和C#
- java对象序列化java.io.Serializable 接口实践
- 用WOX来序列化Java和C# woxSerializer
- Java vs C#序列化和发序列化
- 抽象类和接口 (C#/Java)
- 用C#接口实现通用的文本数据序列化(ZT)
- Java和C#接口的区别
- 类接口java序列化作用以及 serialVersionUID
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义