Exemple #1
0
 /// <summary>
 /// 获取Xml结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="url"></param>
 /// <param name="token"></param>
 /// <param name="xml"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static string RequestXml(this IMessageHandlerBase messageHandler, string url, string token, string xml, int timeOut = AGENT_TIME_OUT)
 {
     if (messageHandler != null)
     {
         messageHandler.UsedMessageAgent = true;
     }
     using (MemoryStream ms = new MemoryStream())
     {
         //这里用ms模拟Request.InputStream
         using (StreamWriter sw = new StreamWriter(ms))
         {
             sw.Write(xml);
             sw.Flush();
             sw.BaseStream.Position = 0;
             return(messageHandler.RequestXml(url, token, sw.BaseStream, timeOut: timeOut));
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// 获取Xml结果。
        /// </summary>
        /// <param name="messageHandler"></param>
        /// <param name="url"></param>
        /// <param name="token"></param>
        /// <param name="stream"></param>
        /// <param name="useNeuCharKey">是否使用WeiWeiHiKey,如果使用,则token为WeiWeiHiKey</param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <returns></returns>
        public static string RequestXml(this IMessageHandlerBase messageHandler, string url, string token, Stream stream, bool useNeuCharKey = false, int timeOut = AGENT_TIME_OUT)
        {
            if (messageHandler != null)
            {
                messageHandler.UsedMessageAgent = true;
            }
            string timestamp = DateTime.Now.Ticks.ToString();
            string nonce     = "GodBlessYou";
            string signature = CheckSignatureWeChat.GetSignature(timestamp, nonce, token);

            url += string.Format("{0}signature={1}&timestamp={2}&nonce={3}",
                                 url.Contains("?") ? "&" : "?", signature.AsUrlData(), timestamp.AsUrlData(), nonce.AsUrlData());

            stream.Seek(0, SeekOrigin.Begin);
            var responseXml = RequestUtility.HttpPost(url, null, stream, timeOut: timeOut);

            //WeixinTrace.SendApiLog("RequestXmlUrl:" + url, responseXml);
            return(responseXml);
        }
Exemple #3
0
        /// <summary>
        /// 对接 NeuChar 平台,获取Xml结果,使用WeiWeiHiKey对接
        /// WeiWeiHiKey的获取方式请看:
        /// </summary>
        /// <param name="messageHandler"></param>
        /// <param name="weiweihiKey"></param>
        /// <param name="xml"></param>
        /// <param name="neucharDomainName"></param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <returns></returns>
        public static string RequestNeuCharXml(this IMessageHandlerBase messageHandler, string weiweihiKey, string xml, string neucharDomainName = "www.neuchar.com", int timeOut = AGENT_TIME_OUT)
        {
            if (messageHandler != null)
            {
                messageHandler.UsedMessageAgent = true;
            }
            var url = "https://" + neucharDomainName + "/App/Weixin?neuCharKey=" + weiweihiKey;//官方地址

            using (MemoryStream ms = new MemoryStream())
            {
                //这里用ms模拟Request.InputStream
                using (StreamWriter sw = new StreamWriter(ms))
                {
                    sw.Write(xml);
                    sw.Flush();
                    sw.BaseStream.Position = 0;
                    return(messageHandler.RequestXml(url, weiweihiKey, sw.BaseStream, timeOut: timeOut));
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 【异步方法】获取Xml结果
        /// </summary>
        /// <param name="messageHandler"></param>
        /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
        /// <param name="url"></param>
        /// <param name="token"></param>
        /// <param name="xml"></param>
        /// <param name="autoFillUrlParameters">是否自动填充Url中缺少的参数(signature、timestamp、nonce),默认为 true</param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <returns></returns>
        public static async Task <string> RequestXmlAsync(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, string url, string token, string xml, bool autoFillUrlParameters = true, int timeOut = AGENT_TIME_OUT)
        {
            if (messageHandler != null)
            {
                messageHandler.UsedMessageAgent = true;
            }
            using (MemoryStream ms = new MemoryStream())
            {
                //这里用ms模拟Request.InputStream
                using (StreamWriter sw = new StreamWriter(ms))
                {
                    await sw.WriteAsync(xml);

                    await sw.FlushAsync();

                    sw.BaseStream.Position = 0;
                    return(await messageHandler.RequestXmlAsync(serviceProvider, url, token, sw.BaseStream, autoFillUrlParameters : autoFillUrlParameters, timeOut : timeOut));
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// 获取 NeuChar 开放平台的ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="weiweihiKey"></param>
 /// <param name="requestMessage"></param>
 /// <param name="neuCharDomainName"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static IResponseMessageBase RequestWeiweihiResponseMessage(this IMessageHandlerBase messageHandler, string weiweihiKey, RequestMessageBase requestMessage, string neuCharDomainName = "www.neuchar.com", int timeOut = AGENT_TIME_OUT)
 {
     return(messageHandler.RequestNeuCharXml(weiweihiKey, requestMessage.ConvertEntityToXmlString(), neuCharDomainName, timeOut).CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #6
0
 /// <summary>
 /// 获取ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="url"></param>
 /// <param name="token"></param>
 /// <param name="xml"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static IResponseMessageBase RequestResponseMessage(this IMessageHandlerBase messageHandler, string url, string token, string xml, int timeOut = AGENT_TIME_OUT)
 {
     return(messageHandler.RequestXml(url, token, xml, timeOut).CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #7
0
 /// <summary>
 /// 【异步方法】获取 NeuChar 开放平台的ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
 /// <param name="weiweihiKey"></param>
 /// <param name="requestMessage"></param>
 /// <param name="neuCharDomainName"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static async Task <IResponseMessageBase> RequestNeuCharResponseMessageAsync(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, string weiweihiKey, RequestMessageBase requestMessage, string neuCharDomainName = "www.neuchar.com", int timeOut = AGENT_TIME_OUT)
 {
     return((await messageHandler.RequestNeuCharXmlAsync(serviceProvider, weiweihiKey, requestMessage.ConvertEntityToXmlString(), neuCharDomainName, timeOut))
            .CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #8
0
 /// <summary>
 /// 【异步方法】获取ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
 /// <param name="autoFillUrlParameters">是否自动填充Url中缺少的参数(signature、timestamp、nonce),默认为 true</param>
 /// <param name="url"></param>
 /// <param name="token"></param>
 /// <param name="xml"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static async Task <IResponseMessageBase> RequestResponseMessageAsync(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, string url, string token, string xml, bool autoFillUrlParameters = true, int timeOut = AGENT_TIME_OUT)
 {
     return((await messageHandler.RequestXmlAsync(serviceProvider, url, token, xml, autoFillUrlParameters, timeOut))
            .CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #9
0
 /// <summary>
 /// 获取 NeuChar 开放平台的ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
 /// <param name="weiweihiKey"></param>
 /// <param name="neuCharDomainName"></param>
 /// <param name="document"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static IResponseMessageBase RequestWeiweihiResponseMessage(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, string weiweihiKey, XDocument document, string neuCharDomainName = "www.neuchar.com", int timeOut = AGENT_TIME_OUT)
 {
     return(messageHandler.RequestNeuCharXml(serviceProvider, weiweihiKey, document.ToString(), neuCharDomainName, timeOut).CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #10
0
 /// <summary>
 /// 获取ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
 /// <param name="autoFillUrlParameters">是否自动填充Url中缺少的参数(signature、timestamp、nonce),默认为 true</param>
 /// <param name="url"></param>
 /// <param name="token"></param>
 /// <param name="stream"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static IResponseMessageBase RequestResponseMessage(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, string url, string token, Stream stream, bool autoFillUrlParameters = true, int timeOut = AGENT_TIME_OUT)
 {
     return(messageHandler.RequestXml(serviceProvider, url, token, stream, autoFillUrlParameters: autoFillUrlParameters, timeOut: timeOut).CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }
Exemple #11
0
 /// <summary>
 /// 【异步方法】获取 NeuChar 开放平台的ResponseMessge结果
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="weiweihiKey"></param>
 /// <param name="neuCharDomainName"></param>
 /// <param name="document"></param>
 /// <param name="timeOut">代理请求超时时间(毫秒)</param>
 /// <returns></returns>
 public static async Task <IResponseMessageBase> RequestNeucharResponseMessage(this IMessageHandlerBase messageHandler, string weiweihiKey, XDocument document, string neuCharDomainName = "www.neuchar.com", int timeOut = AGENT_TIME_OUT)
 {
     return((await messageHandler.RequestNeuCharXmlAsync(weiweihiKey, document.ToString(), neuCharDomainName, timeOut))
            .CreateResponseMessage(messageHandler.MessageEntityEnlightener));
 }