鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > WinRT/Metro > >

重新想象 Windows 8 Store Apps (61)

来源:互联网 作者:佚名 时间:2013-12-23 16:09
重新想象 Windows 8 Store Apps (61) - 通信: http, oauthPosted on [源码下载] 重新想象 Windows 8 Store Apps (61) - 通信: http, oauth 作者:webabcd 介绍 重新想象 Windows 8 Store Apps 之通信 示例 用于演示 http 通信的服务端 WebServer/HttpDemo.as

重新想象 Windows 8 Store Apps (61) - 通信: http, oauth Posted on

[源码下载]


重新想象 Windows 8 Store Apps (61) - 通信: http, oauth



作者:webabcd


介绍
重新想象 Windows 8 Store Apps 之 通信



示例
用于演示 http 通信的服务端
WebServer/HttpDemo.aspx.cs

/* * 用于响应 http 请求 */ using System; using System.IO; using System.Threading; namespace WebServer { HttpDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 停 3 秒,以方便测试 http 请求的取消 Thread.Sleep(3000); ]; switch (action) { : // 响应 http get string Response.Write(); break; : // 响应 http get stream Response.Write(); break; : // 响应 http post string Response.Write(, Request.Form[], Request.Form[], Request.UrlReferrer)); break; : (StreamReader reader = new StreamReader(Request.InputStream)) { string body = reader.ReadToEnd(); Response.Write(Server.HtmlEncode(body)); } break; default: break; } Response.End(); } } }

 

1、通过 HttpClient, HttpRequestMessage, HttpResponseMessage 实现 HTTP 通信
Communication/HTTP/Summary.xaml

<Page x:Class="XamlDemo.Communication.HTTP.Summary" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:XamlDemo.Communication.HTTP" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable

Communication/HTTP/Summary.xaml.cs

/* * 通过 HttpClient, HttpRequestMessage, HttpResponseMessage 实现 HTTP 通信 * * HttpClient - 用于发起 http 请求,以及接收 http 响应 * BaseAddress - 发送请求的 uri * DefaultRequestHeaders - 默认的 http 请求头信息 * MaxResponseContentBufferSize - 读取响应内容时,所可以缓冲的最大字节数。默认值:64K * Timeout - http 请求的超时时间 * CancelPendingRequests() - 取消该 HttpClient 对象所有挂起的 http 请求 * GetStringAsync(), GetStreamAsync(), GetByteArrayAsync(), GetAsync() - http get 数据 * PostAsync(), DeleteAsync(), PutAsync() - http post delete put 数据 * 参数:HttpContent content - http 请求的数据(HttpContent 类型) * 继承自 HttpContent 的类有:StringContent, ByteArrayContent, StreamContent, FormUrlEncodedContent 等 * 参数:HttpCompletionOption completionOption(HttpCompletionOption 枚举) * ResponseContentRead - 获取到全部内容后再返回数据,默认值 * ResponseHeadersRead - 获取到头信息后就返回数据,,用于流式获取 * * HttpRequestMessage - http 请求 * Method - http 方法 * RequestUri - 请求的 uri * Version - http 版本,默认是 1.1 * Headers - http 的请求头信息 * Content - http 请求的内容(HttpContent 类型) * 继承自 HttpContent 的类有:StringContent, ByteArrayContent, StreamContent, FormUrlEncodedContent 等 * * HttpResponseMessage - http 响应 * RequestMessage - 对应的 HttpRequestMessage 对象 * Headers - http 的响应头信息 * Version - http 版本,默认是 1.1 * StatusCode - http 响应的状态码 * ReasonPhrase - http 响应的状态码所对应的短语 * IsSuccessStatusCode - http 响应的状态码是否是成功的值(200-299) * EnsureSuccessStatusCode() - 当 IsSuccessStatusCode 为 false 时会抛出异常 * * * 注:关于下载/上传的进度获取,请参见“后台任务” * * 另:win8 metro 的 http 抓包可用 fiddler * * 还有: * http 通信还可以通过如下方法实现 * HttpWebRequest webRequest = WebRequest.Create(url); */ using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; namespace XamlDemo.Communication.HTTP { Summary : Page { private HttpClient _httpClient; public Summary() { this.InitializeComponent(); } OnNavigatedFrom(NavigationEventArgs e) { (_httpClient != null) { _httpClient.Dispose(); _httpClient = null; } } btnPost_Click_1(object sender, RoutedEventArgs e) { _httpClient = new HttpClient(); try { ; // 创建一个 HttpRequestMessage 对象 HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); postData = new FormUrlEncodedContent( new List<KeyValuePair<string, string>> { , ), , ) } ); // http 请求的数据 request.Content = postData; // http 请求的头信息 request.Headers.Referrer = ); // 请求 HttpRequestMessage 对象,并返回 HttpResponseMessage 数据 HttpResponseMessage response = await _httpClient.SendAsync(request); // http 响应的状态码及其对应的短语 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_1(object sender, RoutedEventArgs e) { // 取消 http 请求 _httpClient.CancelPendingRequests(); } } }


2、演示 http get string
Communication/HTTP/GetString.xaml.cs

上一篇:通信: 获取网络信息, 序列化和反序列化
下一篇:没有了
网友评论
<