服务端发送请求
private static JsonSerializerSettings timeFormat = new JsonSerializerSettings()
{ DateFormatHandling = DateFormatHandling.MicrosoftDateFormat };
public static T SendData<T>(string uri, string data, int Timeout = 60000, int ReadWriteTimeout = 120000)
{
string result = string.Empty;
HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(uri);
wreq.Timeout = Timeout;
wreq.ReadWriteTimeout = ReadWriteTimeout;
wreq.KeepAlive = false;
wreq.Method = "POST";
wreq.ContentType = "application/json;charset=utf-8";
byte[] bData = Encoding.UTF8.GetBytes(data);
DateTime startTime = DateTime.Now;
using (Stream putStream = wreq.GetRequestStream())
{
putStream.Write(bData, 0, bData.Length);
}
var res = wreq.GetResponse() as HttpWebResponse;
using (Stream stream = res.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream))
{
result = sr.ReadToEnd();
}
}
res.Close();
double pf = (DateTime.Now - startTime).TotalMilliseconds;
if (pf > 2000) //耗时2秒以上就记日志
{
WcfLogWriter.WriteLogToFile(WcfLogWriter.ComposPfLog(uri, pf));
}
bData = Encoding.UTF8.GetBytes(result);
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(result, timeFormat);
}
调用
test()
{
RequestData<BuildFileRequest> rd = new RequestData<BuildFileRequest>();
rd.BranchNo = param.BranchNo;
rd.PosId = param.PosId;
rd.PcName = param.PcName;
rd.MacAddr = param.MacAddr;
rd.Data = bfr;
string sendParam = WcfClient.SerializeObject(rd);
ResponseData<BuildFileResponse> buildResult = null;
buildResult = WcfClient.SendData<ResponseData<BuildFileResponse>>(Path.Combine(param.ServerUri, "Stream/BuildFile"), sendParam, 120000, 120000);
}
服务端方法
public ResponseData<BuildFileResponse> BuildFile(RequestData<BuildFileRequest> param)
{
ResponseData<BuildFileResponse> result = null;
result = new ResponseData<BuildFileResponse>();
return result;
}

浙公网安备 33010602011771号