示例#1
0
        /// <summary>
        /// Delete操作
        /// </summary>
        /// <summary>
        ///     Delete请求
        /// </summary>
        /// <param name="uri">
        ///     The uri 是指定资源除主机地址外的唯一定位地址.
        /// </param>
        /// <param name="mediaType">
        ///     The media Type 是指定数据返回的格式.
        /// </param>
        /// <param name="header">系统级参数的头信息</param>
        /// <typeparam name="T">
        ///     获取结果的泛型实体
        /// </typeparam>
        /// <typeparam name="TResut">The TResult</typeparam>
        /// <returns>
        ///     返回Put的结果
        /// </returns>
        public TResut DeleteAsync <TResut>(string uri, MediaTypeEnum mediaType, HeaderRequestInfo header)
        {
            var defaultT = default(TResut);

            // 设置响应格式
            httpClient.DefaultRequestHeaders.Accept.Add(HeaderInfoUtility.GetMediaTpye(mediaType));

            // 设置系统级参数的响应头
            httpClient.DefaultRequestHeaders.SetRequestHeadInfo(header);
            Requestheader = header;

            // 发送http
            var response = httpClient.DeleteAsync(uri).Result;

            if (response.IsSuccessStatusCode)
            {
                defaultT = response.Content.ReadAsAsync <TResut>().Result;
            }

            // headInfo
            ResponseHeader = response.Headers.GetResponseHeadInfo();


            return(defaultT);
        }
示例#2
0
        /// <summary>
        ///    Put请求
        /// </summary>
        /// <typeparam name="TResut">返回结果的泛型类型</typeparam>
        /// <typeparam name="TData">输入参数的泛型类型</typeparam>
        /// <param name="uri">指定的uri,不包含主机地址</param>
        /// <param name="mediaType">指定的结果返回类型</param>
        /// <param name="body">泛型,用于post的请求参数</param>
        /// <param name="header">系统级参数的头信息</param>
        /// <returns>发送Put请求并返回泛型T的结果</returns>
        public TResut PutAsync <TResut, TData>(string uri, MediaTypeEnum mediaType, TData body, HeaderRequestInfo header)
        {
            var defaultT = default(TResut);

            // 设置响应格式
            httpClient.DefaultRequestHeaders.Accept.Add(HeaderInfoUtility.GetMediaTpye(mediaType));

            // 设置系统级参数的响应头
            httpClient.DefaultRequestHeaders.SetRequestHeadInfo(header);
            Requestheader = header;

            // 发送http
            var         jsonFormatter = new JsonMediaTypeFormatter();
            HttpContent txtContent    = new ObjectContent <TData>(body, jsonFormatter);
            var         response      = httpClient.PutAsync(uri, txtContent).Result;

            if (response.IsSuccessStatusCode)
            {
                defaultT = response.Content.ReadAsAsync <TResut>().Result;
            }

            // ResponseHeader
            ResponseHeader = response.Headers.GetResponseHeadInfo();


            // Return
            return(defaultT);
        }
示例#3
0
        /// <summary>
        /// 设置Request的head
        /// </summary>
        /// <param name="headers">
        /// Request的中下文.
        /// </param>
        /// <param name="header">
        /// head的实体
        /// </param>
        public static void SetRequestHeadInfo(this HttpRequestHeaders headers, HeaderRequestInfo header)
        {
            if (header == null)
            {
                return;
            }
            var dict = Convert.ConvertUtility.EntityToDictionary(header);

            foreach (var li in dict)
            {
                headers.Add(li.Key, li.Value);
            }
        }
示例#4
0
        /// <summary>
        /// 一般Form提交
        /// </summary>
        /// <param name="url">路径</param>
        /// <param name="postData">提交内容,Form提交格式,如userId=admin&Password=324324,如果是只有一个字符串的WebApi,那么直接=postValue即可</param>
        /// <returns></returns>
        public string FormPost(string url, string postData, HeaderRequestInfo header)
        {
            HttpContent content = new StringContent(postData);

            content.Headers.ContentType =
                new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");
            // 设置系统级参数的响应头
            if (header != null)
            {
                httpClient.DefaultRequestHeaders.SetRequestHeadInfo(header);
            }
            HttpResponseMessage responseMessage = httpClient.PostAsync(url, content).Result;

            responseMessage.EnsureSuccessStatusCode();

            return(responseMessage.Content.ReadAsStringAsync().Result);
        }
示例#5
0
        /// <summary>
        ///     Get请求
        /// </summary>
        /// <param name="uri">
        ///     The uri 是指定资源除主机地址外的唯一定位地址.
        /// </param>
        /// <param name="mediaType">
        ///     The media Type 是指定数据返回的格式.
        /// </param>
        /// <param name="header">系统级参数的头信息</param>
        /// <typeparam name="T">
        ///     获取结果的泛型实体
        /// </typeparam>
        /// <returns>
        ///     返回Get的结果
        /// </returns>
        public T GetAsync <T>(string uri, MediaTypeEnum mediaType, HeaderRequestInfo header)
        {
            var defaultT = default(T);

            // 设置响应格式
            httpClient.DefaultRequestHeaders.Accept.Add(HeaderInfoUtility.GetMediaTpye(mediaType));

            // 设置系统级参数的响应头
            httpClient.DefaultRequestHeaders.SetRequestHeadInfo(header);
            Requestheader = header;

            // 发送http
            var response = httpClient.GetAsync(uri).Result;

            if (response.IsSuccessStatusCode)
            {
                try
                {
                    defaultT = response.Content.ReadAsAsync <T>().Result;
                }
                catch (Exception)
                {
                    try
                    {
                        defaultT = (T)(Object)response.Content.ReadAsStringAsync().Result;
                    }
                    catch (Exception exception)
                    {
                        throw new Exception("无法将取的值转换成指定的泛型,原因为:" + exception.Message);
                    }

                    //throw;
                }
            }
            // headInfo
            ResponseHeader = response.Headers.GetResponseHeadInfo();

            return(defaultT);
        }