/// <inheritdoc/> public IServiceResponse EndSendRequest(IAsyncResult result) { HttpsAsyncResult result2 = result as HttpsAsyncResult; if (result2 == null) { throw new ArgumentException("Invalid result object passed.", nameof(result)); } try { result2.WaitForComplete(); if (result2.Response != null) { Stream responseContent = result2.Response.Content.ReadAsStreamAsync().Result; return(BinaryDecoder.DecodeMessage(responseContent, null, m_quotas.MessageContext) as IServiceResponse); } } catch (Exception ex) { Utils.Trace("Exception reading HTTPS response: " + ex.Message); result2.Exception = ex; } return(result2 as IServiceResponse); }
/// <inheritdoc/> public IAsyncResult BeginSendRequest(IServiceRequest request, AsyncCallback callback, object callbackData) { HttpResponseMessage response = null; try { ByteArrayContent content = new ByteArrayContent(BinaryEncoder.EncodeMessage(request, m_quotas.MessageContext)); content.Headers.ContentType = m_mediaTypeHeaderValue; var result = new HttpsAsyncResult(callback, callbackData, m_operationTimeout, request, null); Task.Run(async() => { try { var ct = new CancellationTokenSource(m_operationTimeout).Token; response = await m_client.PostAsync(m_url, content, ct); response.EnsureSuccessStatusCode(); } catch (Exception ex) { Utils.Trace("Exception sending HTTPS request: " + ex.Message); result.Exception = ex; response = null; } result.Response = response; result.OperationCompleted(); }); return(result); } catch (Exception ex) { Utils.Trace("Exception sending HTTPS request: " + ex.Message); HttpsAsyncResult result = new HttpsAsyncResult(callback, callbackData, m_operationTimeout, request, response); result.Exception = ex; result.OperationCompleted(); return(result); } }