/// <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)); } } }
/// <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}×tamp={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); }
/// <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)); } } }
/// <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)); } } }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }