当前位置: 首页 > news >正文

外贸网站建设开发上海网站建设最佳方案

外贸网站建设开发,上海网站建设最佳方案,定制开发合同,老渔哥网站建设公司重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 原文:重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传… 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 原文:重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者webabcd介绍重新想象 Windows 8.1 Store Apps 之通信的新特性 下载数据显示下载进度将下载数据保存到本地上传数据显示上传进度上传文件示例HTTP 服务端WebServer/HttpDemo.aspx.cs /** 用于响应 http 请求*/using System; using System.IO; using System.Threading; using System.Web;namespace WebServer {public partial class HttpDemo : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){// 停 3 秒以方便测试 http 请求的取消Thread.Sleep(3000);var action Request.QueryString[action];switch (action){case getString: // 响应 http get string Response.Write(hello webabcd: DateTime.Now.ToString(hh:mm:ss));break;case getStream: // 响应 http get stream Response.Write(hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd hello webabcd);break;case postString: // 响应 http post string Response.Write(string.Format(param1:{0}, param2:{1}, referrer:{2}, Request.Form[param1], Request.Form[param2], Request.UrlReferrer));break;case postStream: // 响应 http post stream using (StreamReader reader new StreamReader(Request.InputStream)){if (Request.InputStream.Length 1024 * 100){// 接收的数据太大则显示“数据接收成功”Response.Write(数据接收成功);}else{// 显示接收到的数据string body reader.ReadToEnd();Response.Write(Server.HtmlEncode(body));}} break;case uploadFile: // 处理上传文件的请求for (int i 0; i Request.Files.Count; i){string key Request.Files.GetKey(i);HttpPostedFile file Request.Files.Get(key);string savePath d:\ file.FileName;// 保存文件file.SaveAs(savePath);Response.Write(string.Format(key: {0}, fileName: {1}, savePath: {2}, key, file.FileName, savePath));Response.Write(\n);}break;case outputCookie: // 用于显示服务端获取到的 cookie 信息for (int i 0; i Request.Cookies.Count; i){HttpCookie cookie Request.Cookies[0];Response.Write(string.Format(cookieName: {0}, cookieValue: {1}, cookie.Name, cookie.Value));Response.Write(\n);}break;case outputCustomHeader: // 用于显示一个自定义的 http headerResponse.Write(myRequestHeader: Request.Headers[myRequestHeader]);break;default:break;}Response.End();}} } 1、演示如何通过新的 HttpClientWindows.Web.Http获取下载进度并将下载数据保存到本地Download.xaml.cs /** 本例演示如何通过新的 HttpClientWindows.Web.Http获取下载进度并将下载数据保存到本地* * * 注在 win8 时代要想获取下载进度只能依靠后台任务来完成*/using System; using System.Threading; using System.Threading.Tasks; using Windows.Storage; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using Windows.Web.Http;namespace Windows81.Communication.HTTP {public sealed partial class Download : Page{private HttpClient _httpClient;private CancellationTokenSource _cts;public Download(){this.InitializeComponent();}protected override void OnNavigatedFrom(NavigationEventArgs e){// 释放资源if (_httpClient ! null){_httpClient.Dispose();_httpClient null;}if (_cts ! null){_cts.Dispose();_cts null;}}private async void btnDownload_Click(object sender, RoutedEventArgs e){_httpClient new HttpClient();_cts new CancellationTokenSource();try{// 用于获取下载进度IProgressHttpProgress progress new ProgressHttpProgress(ProgressHandler);HttpResponseMessage response await _httpClient.GetAsync(new Uri(http://files.cnblogs.com/webabcd/WindowsPhone.rar?ll),HttpCompletionOption.ResponseContentRead).AsTask(_cts.Token, progress); // 把 progress 放到 task 里以便获取下载进度 lblMsg.Text ((int)response.StatusCode) response.ReasonPhrase;lblMsg.Text Environment.NewLine;// 将下载好的数据保存到本地StorageFolder storageFolder KnownFolders.DocumentsLibrary;StorageFile storageFile await storageFolder.CreateFileAsync(WindowsPhone.rar, CreationCollisionOption.ReplaceExisting);using (StorageStreamTransaction transaction await storageFile.OpenTransactedWriteAsync()){lblMsg.Text 文件已下载写入到磁盘中...;/** IHttpContent.WriteToStreamAsync() - 用于保存数据*/await response.Content.WriteToStreamAsync(transaction.Stream);await transaction.CommitAsync();lblMsg.Text 文件已写入到磁盘;}}catch (TaskCanceledException){lblMsg.Text 取消了;lblMsg.Text Environment.NewLine;}catch (Exception ex){lblMsg.Text ex.ToString();lblMsg.Text Environment.NewLine;}}private void btnCancel_Click(object sender, RoutedEventArgs e){// 取消 http 请求if (_cts ! null){_cts.Cancel();_cts.Dispose();_cts null;}}// 下载进度发生变化时调用的处理器private void ProgressHandler(HttpProgress progress){/** HttpProgress - http 通信的进度* BytesReceived - 已收到的字节数* BytesSent - 已发送的字节数* TotalBytesToReceive - 总共需要收到的字节数* TotalBytesToSend - 总共需要发送的字节数* Retries - 重试次数* Stage - 当前通信的阶段HttpProgressStage 枚举*/string result BytesReceived: {0}\nBytesSent: {1}\nRetries: {2}\nStage: {3}\nTotalBytesToReceive: {4}\nTotalBytesToSend: {5}\n;result string.Format(result, progress.BytesReceived, progress.BytesSent, progress.Retries, progress.Stage, progress.TotalBytesToReceive, progress.TotalBytesToSend);lblMsg.Text result;}} } 2、演示如何通过新的 HttpClientWindows.Web.Http获取上传进度Upload.xaml.cs /** 本例演示如何通过新的 HttpClientWindows.Web.Http获取上传进度* * * 注在 win8 时代要想获取上传进度只能依靠后台任务来完成*/using System; using System.IO; using System.Runtime.InteropServices.WindowsRuntime; using System.Threading; using System.Threading.Tasks; using Windows.Foundation; using Windows.Storage.Streams; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using Windows.Web.Http;namespace Windows81.Communication.HTTP {public sealed partial class Upload : Page{private HttpClient _httpClient;private CancellationTokenSource _cts;public Upload(){this.InitializeComponent();}protected override void OnNavigatedFrom(NavigationEventArgs e){// 释放资源if (_httpClient ! null){_httpClient.Dispose();_httpClient null;}if (_cts ! null){_cts.Dispose();_cts null;}}private async void btnUpload_Click(object sender, RoutedEventArgs e){_httpClient new HttpClient();_cts new CancellationTokenSource();try{Uri resourceAddress new Uri(http://localhost:39630/HttpDemo.aspx?actionpostStream);// 模拟一个比较大的比较慢的流供 http 上传const uint streamLength 10000000;HttpStreamContent streamContent new HttpStreamContent(new SlowInputStream(streamLength));streamContent.Headers.ContentLength streamLength; // 必须要指定请求数据的 ContentLength否则就是 chunked 了// 用于获取上传进度IProgressHttpProgress progress new ProgressHttpProgress(ProgressHandler);HttpResponseMessage response await _httpClient.PostAsync(resourceAddress, streamContent).AsTask(_cts.Token, progress); // 把 progress 放到 task 里以便获取上传进度 lblMsg.Text ((int)response.StatusCode) response.ReasonPhrase;lblMsg.Text Environment.NewLine;lblMsg.Text await response.Content.ReadAsStringAsync();lblMsg.Text Environment.NewLine;}catch (TaskCanceledException){lblMsg.Text 取消了;lblMsg.Text Environment.NewLine;}catch (Exception ex){lblMsg.Text ex.ToString();lblMsg.Text Environment.NewLine;}}// 生成一个指定大小的内存流private static MemoryStream GenerateSampleStream(int size){byte[] subData new byte[size];for (int i 0; i subData.Length; i){subData[i] (byte)(97 i % 26); // a-z}return new MemoryStream(subData);}private void btnCancel_Click(object sender, RoutedEventArgs e){// 取消 http 请求if (_cts ! null){_cts.Cancel();_cts.Dispose();_cts null;}}// 上传进度发生变化时调用的处理器private void ProgressHandler(HttpProgress progress){/** HttpProgress - http 通信的进度* BytesReceived - 已收到的字节数* BytesSent - 已发送的字节数* TotalBytesToReceive - 总共需要收到的字节数* TotalBytesToSend - 总共需要发送的字节数* Retries - 重试次数* Stage - 当前通信的阶段HttpProgressStage 枚举*/string result BytesReceived: {0}\nBytesSent: {1}\nRetries: {2}\nStage: {3}\nTotalBytesToReceive: {4}\nTotalBytesToSend: {5}\n;result string.Format(result, progress.BytesReceived, progress.BytesSent, progress.Retries, progress.Stage, progress.TotalBytesToReceive, progress.TotalBytesToSend);lblMsg.Text result;}}// 模拟一个比较慢的输入流class SlowInputStream : IInputStream{uint length;uint position;public SlowInputStream(uint length){this.length length;position 0;}public IAsyncOperationWithProgressIBuffer, uint ReadAsync(IBuffer buffer, uint count, InputStreamOptions options){return AsyncInfo.RunIBuffer, uint(async (cancellationToken, progress) {if (length - position count){count length - position;}byte[] data new byte[count];for (uint i 0; i count; i){data[i] 64;}// 延迟 10 毫秒再继续以模拟一个比较慢的输入流await Task.Delay(10);position count;progress.Report(count);return data.AsBuffer();});}public void Dispose(){}} } 3、演示如何通过新的 HttpClientWindows.Web.Http上传文件通过 multipart/form-data 的方式UploadFile.xaml.cs /** 本例演示如何通过新的 HttpClientWindows.Web.Http上传文件通过 multipart/form-data 的方式*/using System; using System.Threading; using System.Threading.Tasks; using Windows.Storage; using Windows.Storage.Streams; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using Windows.Web.Http;namespace Windows81.Communication.HTTP {public sealed partial class UploadFile : Page{private HttpClient _httpClient;private CancellationTokenSource _cts;public UploadFile(){this.InitializeComponent();}protected override void OnNavigatedFrom(NavigationEventArgs e){// 释放资源if (_httpClient ! null){_httpClient.Dispose();_httpClient null;}if (_cts ! null){_cts.Dispose();_cts null;}}private async void btnUploadFile_Click(object sender, RoutedEventArgs e){_httpClient new HttpClient();_cts new CancellationTokenSource();try{// 构造需要上传的文件数据StorageFile file1 await StorageFile.GetFileFromApplicationUriAsync(new Uri(ms-appx:///Assets/Son.jpg, UriKind.Absolute));IRandomAccessStreamWithContentType stream1 await file1.OpenReadAsync();HttpStreamContent streamContent1 new HttpStreamContent(stream1);// 构造需要上传的文件数据StorageFile file2 await StorageFile.GetFileFromApplicationUriAsync(new Uri(ms-appx:///Assets/Son.jpg, UriKind.Absolute));IRandomAccessStreamWithContentType stream2 await file1.OpenReadAsync();HttpStreamContent streamContent2 new HttpStreamContent(stream2);// 通过 HttpMultipartFormDataContent 来指定需要“multipart/form-data”上传的文件HttpMultipartFormDataContent fileContent new HttpMultipartFormDataContent();// 第 1 个参数需要上传的文件数据// 第 2 个参数对应 asp.net 服务的 Request.Files 中的 key参见WebServer 项目中的 HttpDemo.aspx.cs// 第 3 个参数对应 asp.net 服务的 Request.Files 中的 fileName参见WebServer 项目中的 HttpDemo.aspx.csfileContent.Add(streamContent1, file1, file1.jpg); fileContent.Add(streamContent2, file2, file2.jpg);HttpResponseMessage response await _httpClient.PostAsync(new Uri(http://localhost:39630/HttpDemo.aspx?actionuploadFile), fileContent).AsTask(_cts.Token);lblMsg.Text ((int)response.StatusCode) response.ReasonPhrase;lblMsg.Text Environment.NewLine;lblMsg.Text await response.Content.ReadAsStringAsync();lblMsg.Text Environment.NewLine;}catch (TaskCanceledException){lblMsg.Text 取消了;lblMsg.Text Environment.NewLine;}catch (Exception ex){lblMsg.Text ex.ToString();lblMsg.Text Environment.NewLine;}}private void btnCancel_Click(object sender, RoutedEventArgs e){// 取消 http 请求if (_cts ! null){_cts.Cancel();_cts.Dispose();_cts null;}}} } OK[源码下载] posted on 2014-09-23 13:46 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/3988209.html
http://www.zqtcl.cn/news/137234/

相关文章:

  • 网站建设费包括什么建筑设计领域
  • 网站建设 信科网络建行网站会员注册用户名
  • 网站建设的什么是开发实施注意什么网站开发实用技术pdf
  • 网站设计的资质叫什么贵阳网站建设咨询
  • 郑州哪家公司做网站怎么做自己的销售网站
  • 北大青鸟教网站开发吗中国电信 网站备案
  • 网站目录结构图wordpress ftp连接不上
  • 使用php做的网站有哪些网站备案密码重置申请表
  • php网站开发好找工作吗一叶子电子商务网站建设策划书
  • 运营好还是网站开发好购买域名后怎样建公司官网
  • 优秀设计网站推荐晋江市住房和城乡建设局网站
  • 杭州市区网站制作单位青海公路建设服务网站
  • 大型门户网站建设美丽杭州房价
  • 素材下载解析接口网站开发网站关键词热度
  • 山东seo推广网站建设新乡手机网站建设官网
  • 网站定制公司报价wordpress清新模板下载
  • 斗鱼网站开发是用什么语言东莞人才网智通
  • 淘宝上网站建设为啥这么便宜自己如何建设个网站
  • 做网站判多少年滦南网站建设
  • 网站开发难不难学做网站会提供源代码吗
  • 一个学校怎么制作网站阿里云服务器登录
  • 网站建设哪家合适对网站建设服务公司的看法
  • 网站留住访客柳州正规网站建设加盟
  • 网站照片要求现在百度怎么优化排名
  • 国外经典平面设计网站60平米一居室装修价格
  • 网站建设选择题个人游戏网站备案
  • 深圳企业网站制作公司wordpress 自定义插件开发
  • 网站代付系统怎么做iis不能新建网站
  • 廉政网站建设做环保的网站有哪些
  • 做彩票网站违法网站邮箱后台子域名