/// <summary> /// 创建POST方式的HTTP请求 /// </summary> /// <param name="url">请求的URL</param> /// <param name="parameters">随同请求POST的参数名称及参数值字典</param> /// <returns></returns> public HttpRequestResult DoPost(string url, NameValueCollection parameters) { HttpRequestResult httpRequestResult = new HttpRequestResult(); try { _webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var responseBuffer = _webClient.UploadValues(_messageSendServiceUrl, "POST", parameters); httpRequestResult.Success = true; httpRequestResult.Result = Encoding.UTF8.GetString(responseBuffer); } catch (WebException e) { httpRequestResult.Success = false; httpRequestResult.Result = e.Message; } return(httpRequestResult); }
public HttpRequestResult DoGet(string url) { HttpRequestResult httpRequestResult = new HttpRequestResult(); try { _webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var responseBuffer = _webClient.DownloadString(url); httpRequestResult.Success = true; httpRequestResult.Result = responseBuffer; } catch (WebException e) { httpRequestResult.Success = false; httpRequestResult.Result = e.Message; } return(httpRequestResult); }
/// <summary> /// 发送多条消息</summary> /// <param name="messageContent">消息封包</param> /// <param name="messageReceivers">消息接收者</param> public virtual SendMessageResult SendMultiMessage(MessageContent messageContent, MultiMessageReceiver messageReceivers) { Message message = new Message { Type = messageContent.Type, Content = messageContent }; // 获取token,检查token的有效性 AccessToken token = GetAccessToken(); if (!token.Success) { return(new SendMessageResult(false, token.Error)); } NameValueCollection parameters = new NameValueCollection(); parameters.Add("access_token", token.Token); parameters.Add("message", SerializeMessage(message)); if (messageReceivers.IdType == PersonMessageReceiverIdType.LoginId) { parameters.Add("loginIds", messageReceivers.ToId); } else if (messageReceivers.IdType == PersonMessageReceiverIdType.UserId) { parameters.Add("userIds", messageReceivers.ToId); } parameters.Add("userNames", messageReceivers.ToName); parameters.Add("id_type", ((int)messageReceivers.IdType).ToString()); parameters.Add("msgIds", MakeMessageIds(messageReceivers.Length)); HttpRequestResult requestResult = DoPost(_messageSendServiceUrl, parameters); if (!requestResult.Success) { return(new SendMessageResult(false, requestResult.Result)); } return(JsonConvert.DeserializeObject <SendMessageResult>(requestResult.Result)); }
public virtual AccessToken GetAccessToken() { // 检查token过期 if (null != _accessToken && _accessToken.Success && _accessToken.Expire > new DateTime()) { return(_accessToken); } HttpRequestResult result = DoGet(String.Format(_tokenGetServiceUrl + "?grant_type={0}&appid={1}&secret={2}", "client_credential", _appId, _secretKey)); // 如果调用rest服务出问题了,那么就直接accessToken if (!result.Success) { _accessToken = new AccessToken(result.Success, result.Result); return(_accessToken); } // 缓存accessToken _accessToken = JsonConvert.DeserializeObject <AccessToken>(result.Result); return(_accessToken); }