Пример #1
0
        /// <summary>
        /// Performs a HTTP Post with a result
        /// </summary>
        /// <typeparam name="TOut">Output Type</typeparam>
        /// <typeparam name="TIn">Input Type</typeparam>
        /// <param name="inputParams">Input object</param>
        /// <returns>Output object</returns>
        public virtual async Task <TOut> Post <TOut, TIn>(TIn inputParams)
        {
            TOut returnValue = default(TOut);

            using (var client = new HttpClient(_httpMessageHandler, false))
            {
                Init(client);
                ResponseMessage = await client.PostAsync(_rightUrl, inputParams, JsonMediaTypeFormatterFactory.Get(JsonMediaTypeFormatterMode.TypeNameHandlingAll));

                //ResponseMessage = await client.PostAsJsonAsync(_rightUrl, inputParams);

                if (!ResponseMessage.IsSuccessStatusCode)
                {
                    var responseErrorPhrase = ResponseMessage.ReasonPhrase;
                    ResponseMessage.Dispose();

                    throw new Exception(responseErrorPhrase);
                }

                var mediaTypeFormatters = new MediaTypeFormatter[] { JsonMediaTypeFormatterFactory.Get(JsonMediaTypeFormatterMode.TypeNameHandlingAll) };
                returnValue = await ResponseMessage.Content.ReadAsAsync <TOut>(mediaTypeFormatters);


                //if (ResponseMessage.IsSuccessStatusCode)
                //    return await ResponseMessage.Content.ReadAsAsync<TOut>(new MediaTypeFormatter[] { JsonMediaTypeFormatterFactory.Get(JsonMediaTypeFormatterMode.TypeNameHandlingAll) });
                //else throw new Exception(ResponseMessage.ReasonPhrase);
            }
            ResponseMessage.Dispose();

            return(returnValue);
        }
Пример #2
0
        /// <summary>
        /// Performs a HTTP Post without a result
        /// </summary>
        /// <typeparam name="TIn">Input Type</typeparam>
        /// <param name="inputParams">Input object</param>
        /// <returns>Output object</returns>
        public virtual async Task Post <TIn>(TIn inputParams)
        {
            using (var client = new HttpClient(_httpMessageHandler, false))
            {
                Init(client);
                ResponseMessage = await client.PostAsync(_rightUrl, inputParams, JsonMediaTypeFormatterFactory.Get(JsonMediaTypeFormatterMode.TypeNameHandlingAll));

                ResponseMessage.Dispose();
            }
        }