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(""); }
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); }
//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); }