private static string ParsToString(Hashtable Pars, UrlEncodeHandler encodeHandler) { if (Pars == null) { return(string.Empty); } StringBuilder sb = new StringBuilder(); foreach (string k in Pars.Keys) { if (sb.Length > 0) { sb.Append("&"); } sb.Append(encodeHandler(k) + "=" + encodeHandler(Pars[k]?.ToString())); } return(sb.ToString()); }
/// <summary> /// 需要WebService支持Get调用,返回Jsonp格式数据。 /// </summary> /// <param name="URL"></param> /// <param name="Pars"></param> /// <param name="encodeHandler"></param> /// <returns></returns> public static T QueryGetWebService <T>(string URL, Hashtable Pars, UrlEncodeHandler encodeHandler, Func <string, T> responseConverter) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "?" + ParsToString(Pars, encodeHandler)); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; SetWebRequest(request); request.ReadWriteTimeout = 600000; request.Timeout = 600000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); var result = ReadResponse(response, responseConverter); if (response != null) { response.Close(); } return(result); }
private static Hashtable _xmlNamespaces = new Hashtable();//缓存xmlNamespace,避免重复调用GetNamespace #region 新增方法 2020-3-19 /// <summary> /// 需要WebService支持Post调用,返回Json格式数据。 /// </summary> /// <param name="URL"></param> /// <param name="MethodName"></param> /// <param name="Pars"></param> /// <param name="urlEncodeHandler">调用.NET接口:HttpUtility.UrlEncode;调用Java接口:HttpUtilityEx.UrlEncode4Java。</param> /// <returns></returns> public static JObject QueryPostWebService(string URL, string MethodName, Hashtable Pars, UrlEncodeHandler encodeHandler) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; //request.PreAuthenticate //request.Headers[HttpRequestHeader.Authorization] = ""; SetWebRequest(request); request.ReadWriteTimeout = 600000; request.Timeout = 600000; //request.ContinueTimeout byte[] data = Encoding.UTF8.GetBytes(ParsToString(Pars, encodeHandler)); WriteRequestData(request, data); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); var result = ReadResponse(response, JObject.Parse); if (response != null) { response.Close(); } return(result); }