Beispiel #1
0
        public async Task <string> GetData()
        {
            var cts = new CancellationTokenSource();

            cts.CancelAfter(TimeSpan.FromSeconds(30));

            var webService  = PeripheralInfo.IP + WebServiceGetBuffer;
            var resourceUri = new Uri(webService);

            try
            {
                Windows.Web.Http.HttpResponseMessage response = await httpClient.PostAsync(resourceUri, null);

                var message = await response.Content.ReadAsStringAsync();

                if (message != "")
                {
                    OnReceivedData(DataHandling.DataConversion.StringToListByteArray(message).ToArray());
                }
                response.Dispose();
                cts.Dispose();
                return(message);
            }
            catch (TaskCanceledException ex)
            {
                // Handle request being canceled due to timeout.
                Debug.WriteLine(ex.Message);
                return("");
            }
            return("");
        }
Beispiel #2
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);
        }
Beispiel #3
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);
        }