Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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));
        }
Example #4
0
        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);
        }