您的位置:首页 > 编程语言 > Java开发

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# json