/// <summary> /// 消息接收处理 /// </summary> /// <param name="authSignature"></param> /// <returns></returns> public override IActionResult Post(AuthSignature authSignature) { this.AuthSignature = authSignature; var stream = HttpContext.Request.Body; XDocument document = XmlHelper.Convert(stream); this.ConvertEntity(document.ToString()); string result = this.ExecuteResult(); return(Content(result)); }
protected async Task <string> GetResponseAsync(string url) { using (var request = new HttpRequestMessage(HttpMethod.Get, url)) { AuthSignature signature = new AuthSignature(this.wykopAccess.Secret, request.RequestUri); var hash = signature.FetchSignature(); request.Headers.Add("apisign", hash); HttpResponseMessage httpResponseMessage = await this.httpClient.SendAsync(request); httpResponseMessage.EnsureSuccessStatusCode(); return(await httpResponseMessage.Content.ReadAsStringAsync()); } }
public Uri Connect(Uri redirectUrl, string appSecret) { var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(redirectUrl.AbsoluteUri); var base64 = Convert.ToBase64String(plainTextBytes); var redirect = Uri.EscapeDataString(base64); var secure = AuthSignature.ComputeMD5(appSecret + redirectUrl.AbsoluteUri); var parameters = new HashSet <ApiParameter> { new ApiParameter("redirect", redirect), new ApiParameter("secure", secure) }; return(Client.GetApiMethodUrl(new ApiMethod(ApiV1Constants.UserConnect, HttpMethod.Post, parameters))); }
public abstract IActionResult Post([FromBody] AuthSignature authSignature);
public async Task <TResult> CallApiMethod <TResult>(ApiMethod method, IEnumerable <JsonConverter> converters = null) where TResult : class { if (_disposed) { throw new ObjectDisposedException("WykopClient"); } if (method == null) { throw new ArgumentNullException(nameof(method)); } var apiRequestUrl = BuildApiRequestUrl(method); using (var request = new HttpRequestMessage(method.HttpMethod, apiRequestUrl.ToString())) { AuthSignature signature; AddRequestHeader(request); if (method.HttpMethod == HttpMethod.Get) { signature = new AuthSignature(_appSecret, request.RequestUri); } else if (method.HttpMethod == HttpMethod.Post) { signature = new AuthSignature(_appSecret, request.RequestUri, method.PostParameters); request.Content = BuilPostContent(method); } else { throw new UnsupportedHttpMethodException("Http method {method.HttpMethod} is not supported"); } var hash = signature.FetchSignature(); request.Headers.Add("apisign", hash); using (var response = await _client.SendAsync(request, CancellationToken.None).ConfigureAwait(false)) { if (!response.IsSuccessStatusCode) { throw new InvalidResponseException("Response is not success. ", 0); } var stringResponse = response.Content.ReadAsStringAsync().Result; var responseType = CheckResponseType(stringResponse, response); ValidateErrors(stringResponse); switch (responseType) { case ResponseType.Unsupported: case ResponseType.Json: break; case ResponseType.Html: return((dynamic) new HtmlResponse() { Html = stringResponse }); case ResponseType.ValueArray: // API is incosistent - return array with boolean, // but i don't know is that the only one behaviour var booleanResult = new BooleanModel(); booleanResult.Success = stringResponse.Contains("true") ? true : false; return((dynamic)booleanResult); } using (var reader = new JsonTextReader(new StringReader(stringResponse))) { var serializer = CreateSerializer(converters); var result = serializer.Deserialize <TResult>(reader); return(result); } } } }
/// <summary> /// 构造器 /// </summary> /// <param name="xml">微信端传入的XML字符串</param> /// <param name="authSignature">签名认证实体信息</param> public HandlerMsgCenter(string xml, AuthSignature authSignature) { //转换成实体类型 CurrentRootMsg = RequestMsgFactory.ConvertEntity(xml); }