Exemple #1
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 #2
0
        /// <summary>
        /// 【异步方法】对接 NeuChar 平台,获取Xml结果,使用WeiWeiHiKey对接
        /// WeiWeiHiKey的获取方式请看:
        /// </summary>
        /// <param name="messageHandler"></param>
        /// <param name="serviceProvider">.NET Core 的 ServiceProvider(.NET Framework 可设为 null)</param>
        /// <param name="weiweihiKey"></param>
        /// <param name="xml"></param>
        /// <param name="neucharDomainName"></param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <returns></returns>
        public static async Task <string> RequestNeuCharXmlAsync(this IMessageHandlerBase messageHandler, IServiceProvider serviceProvider, 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))
                {
                    await sw.WriteAsync(xml);

                    await sw.FlushAsync();

                    sw.BaseStream.Position = 0;
                    return(await messageHandler.RequestXmlAsync(serviceProvider, url, weiweihiKey, sw.BaseStream, timeOut : timeOut));
                }
            }
        }
Exemple #3
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));
 }