コード例 #1
0
        private static async Task <IHttpContent> GetCompressedContent(IHttpContent originalContent)
        {
            var ms = new System.IO.MemoryStream();

            try
            {
                await CompressOriginalContentStream(originalContent, ms).ConfigureAwait(false);

                ms.Seek(0, System.IO.SeekOrigin.Begin);

                var compressedContent = new Windows.Web.Http.HttpStreamContent(ms.AsInputStream());
                originalContent.CopyHeadersTo(compressedContent);
                compressedContent.Headers.ContentEncoding.Clear();
                compressedContent.Headers.ContentEncoding.Add(new Windows.Web.Http.Headers.HttpContentCodingHeaderValue("gzip"));
                compressedContent.Headers.ContentLength = (ulong)ms.Length;

                originalContent.Dispose();

                return(compressedContent);
            }
            catch
            {
                ms?.Dispose();
                throw;
            }
        }
コード例 #2
0
ファイル: HttpAdapter.cs プロジェクト: MNTMDEV/VultrMgr
 /// <summary>
 /// 销毁请求正文缓冲区(不应直接调用)
 /// </summary>
 private void DisposeContent()
 {
     if (httpContent != null)
     {
         httpContent.Dispose();
         httpContent = null;
     }
 }
コード例 #3
0
        /// <summary>
        /// Disposes this instance and all internal resources.
        /// </summary>
        /// <param name="isDisposing">True if this method is being called explicitly from user code, otherwise false if it being called from the finalizer by the GC.</param>
        protected virtual void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                if (originalContent != null)
                {
                    originalContent?.Dispose();
                    originalContent = null;

                    bufferedData = null;
                }
            }
        }
コード例 #4
0
        private static async Task <BitmapImage> GetMainSubStep_CookielessGetPic(string picUrl)
        {
            Uri myUri = new Uri(picUrl);
            HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, myUri);

            req.Headers.Host = new HostName(myUri.Host);
            req.Headers.Cookie.Clear();
            HttpResponseMessage response = await client.SendRequestAsync(req);

            if (response == null)
            {
                return(null);
            }
            //HttpResponseMessage response
            if (response.StatusCode != HttpStatusCode.Ok)
            {
                return(null);
            }
            IHttpContent icont = response.Content;

            IBuffer buffer = await icont.ReadAsBufferAsync();


            IRandomAccessStream irStream = new InMemoryRandomAccessStream();
            BitmapImage         img      = new BitmapImage();

            await irStream.WriteAsync(buffer);

            irStream.Seek(0);

            await img.SetSourceAsync(irStream);

            irStream.Dispose();
            icont.Dispose();
            response.Dispose();
            req.Dispose();

            return(img);
        }
コード例 #5
0
        //prepared private
        public static async Task <string> CookiedGetUrl(string url, string referrer)
        {
            HttpResponseMessage response = null;

            try
            {
                HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, new Uri(url));
                req.Headers.Referer = new Uri(referrer);
                response            = await client.SendRequestAsync(req);

                req.Dispose();
            }
            catch (COMException e)
            {
                if ((uint)e.HResult == 0x80072f76)
                {
                    await ShowMessageDialog("可能是被验证码阻挡。",
                                            "错误代码:" + String.Format("{0:x8}", e.HResult) + "\n错误类型:" + e.GetType() + "\n错误信息:" +
                                            e.Message + "\n"
                                            + "如果是验证码问题,请不要立即点确定。请先打开浏览器,输入验证码。");

                    await ShowMessageDialog("提示", "如果已经输入验证码,可以确认继续;\n如果发现Cookie已失效,继续并稍后以重新设置Cookie");
                }
                try
                {
                    HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, new Uri(url));
                    req.Headers.Referer = new Uri(referrer);
                    response            = await client.SendRequestAsync(req);

                    req.Dispose();
                }
                catch (COMException e2)
                {
                    if ((uint)e2.HResult == 0x80072f76)
                    {
                        await ShowMessageDialog("错误未解决。",
                                                "错误类型:" + e2.GetType() + "\n错误信息:" + e2.Message + "\n持续网络故障。为避免故障扩大,程序将结束。可检查网络/jingyan.baidu.com,稍后再启动。");

                        Application.Current.Exit();
                    }
                    if ((uint)e2.HResult == 0x80072efd)
                    {
                        await ShowMessageDialog("错误未解决。80072efd,系统网络故障",
                                                "错误类型:" + e2.GetType() + "\n错误信息:" + e2.Message + "\n请百度80072efd寻找解决办法。该故障和系统网络设置有关。可能是被国产安全软件乱优化造成。\n持续网络故障。为避免故障扩大,程序将结束。可检查网络,稍后再启动。");

                        Application.Current.Exit();
                    }
                    client.Dispose();
                    await ShowMessageDialog("未知故障。可能是网络问题", "错误类型:" + e2.GetType() + "\n错误信息:" + e2.Message);

                    throw new COMException(e2.Message);
                }
            }

            if (response == null)
            {
                return("RESPONSE NULL");
            }

            if (response.StatusCode != HttpStatusCode.Ok)
            {
                return(response.StatusCode.ToString());
            }
            IHttpContent icont   = response.Content;
            IInputStream istream = await icont.ReadAsInputStreamAsync();

            StreamReader reader  = new StreamReader(istream.AsStreamForRead(), Encoding.UTF8);
            string       content = reader.ReadToEnd();

            reader.Dispose();
            istream.Dispose();
            icont.Dispose();
            response.Dispose();

            return(content);
        }