Beispiel #1
0
 /// <summary>
 /// 发送请求(核心)
 /// </summary>
 /// <param name="method">请求的方法</param>
 /// <param name="sendData">请求参数 (可变参数与服务端参数一致)</param>
 /// <returns></returns>
 private string SendCore(string method, params object[] sendData)
 {
     try
     {
         //若存在webservice类 执行反射调用
         if (_type != null)
         {
             var ret = Fun(method, sendData);
             return(ret == null ? null : CoreConvert.ObjToJsonData(ret));
         }
         string result;
         var    httpWebRequest = (HttpWebRequest)WebRequest.Create(ServiceUrl + "/WebSrviceSoap");
         httpWebRequest.Method      = "POST";
         httpWebRequest.ContentType = "text;charset=UTF-8";
         //这个在非GET的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据做返回数据
         httpWebRequest.ServicePoint.Expect100Continue = false;
         var datas   = sendData == null || sendData.Length == 0 ? string.Empty : CoreConvert.ObjToJsonData(sendData.Select(CoreConvert.ObjToJsonData).ToList());
         var tmpData = new SendData {
             Method = method, Datas = datas
         };
         var data = Encoding.UTF8.GetBytes(CoreConvert.ObjToJsonData(tmpData));
         httpWebRequest.ContentLength = data.Length;
         var outStream = httpWebRequest.GetRequestStream();
         outStream.Write(data, 0, data.Length);
         outStream.Close();
         var webResponse     = httpWebRequest.GetResponse();
         var httpWebResponse = (HttpWebResponse)webResponse;
         var stream          = httpWebResponse.GetResponseStream();
         if (stream != null)
         {
             var streamReader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"));
             result = streamReader.ReadToEnd();
             streamReader.Close();
             stream.Close();
         }
         else
         {
             result = string.Empty;
         }
         return(result);
     }
     catch (Exception ex)
     {
         throw new Exception("HttpErr" + " uri:" + ServiceUrl + " method:" + method + " httpData:" + sendData + "err:" + ex);
     }
 }
Beispiel #2
0
 /// <summary>
 /// 执行服务器方法
 /// </summary>
 /// <param name="mi">方法</param>
 /// <param name="pos">参数</param>
 /// <returns></returns>
 private string Fun(MethodBase mi, object[] pos)
 {
     try
     {
         //创建实例
         var o = Activator.CreateInstance(_serviceClass);
         //调用方法
         if (mi != null)
         {
             return(CoreConvert.ObjToJsonData(mi.Invoke(o, pos)));
         }
         CoreLog.Error("方法不能为空");
         return(null);
     }
     catch (Exception ex)
     {
         CoreLog.Error("方法:" + mi?.Name + "执行错误:" + ex);
         throw new Exception(ex.Message);
     }
 }