服务端发送请求

        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;

}

posted @ 2017-04-25 09:28  武汉程序猿  阅读(96)  评论(0)    收藏  举报