稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTcpBinding的支持
2010-10-12 12:30:06 来源:WEB开发网3、两种 HTTP 请求方式,即 ClientHttp 和 BrowserHttp 的区别
服务端:
HttpResult.aspx.cs
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Silverlight40.Web
{
public partial class HttpResult : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 返回当前 HTTP 请求的 HTTP 方法及 Cookie
Response.Write(string.Format("HttpMethod: {0}, Cookie - name: {1}", Request.HttpMethod, Request.Cookies["name"].Value));
Response.End();
}
}
}
客户端:
ClientHttpAndBrowserHttp.xaml.cs
代码
/*
* BrowserHttp - 由浏览器构造 HTTP 请求。默认值
* ClientHttp - 由 Silverlight 客户端构造 HTTP 请求
*
* 指定 HTTP 请求为 BrowserHttp 类型或 ClientHttp 类型的方法如下:
* WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); - 根据前缀指定 HTTP 请求的方式
* (HttpWebRequest)WebRequestCreator.ClientHttp.Create(); - 为单个请求指定 HTTP 请求的方式
*
* 本例演示如果通过 ClientHttp,来实现 PUT 方法的 HTTP 请求以及如何手动构造 Cookie(这些在 BrowserHttp 方式下是无法实现的)
* 详细的 BrowserHttp 和 ClientHttp 的区别参看文档
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
using System.Net.Browser;
using System.IO;
using System.Threading;
namespace Silverlight40.Communication
{
public partial class ClientHttpAndBrowserHttp : Page
{
SynchronizationContext _syncContext;
public ClientHttpAndBrowserHttp()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
_syncContext = SynchronizationContext.Current;
// 创建一个 ClientHttp 方式的 HttpWebRequest 对象
HttpWebRequest request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri("http://localhost:9483/HttpResult.aspx"));
// ClientHttp 可以使用任何 Http 方法(BrowserHttp 只能使用 GET 和 POST)
request.Method = "PUT";
// ClientHttp 可以手工构造 Cookie(如果需要 Forms 验证或 NTLM 验证则只能通过 BroswerHttp 方式)
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri("http://localhost:9483"), new Cookie("name", "webabcd"));
request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);
}
// 获取服务返回的结果
private void ResponseCallback(IAsyncResult result)
{
HttpWebRequest request = result.AsyncState as HttpWebRequest;
WebResponse response = request.EndGetResponse(result) as HttpWebResponse;
if (response != null)
{
Stream responseStream = response.GetResponseStream();
using (StreamReader sr = new StreamReader(responseStream))
{
string s = sr.ReadToEnd();
Deployment.Current.Dispatcher.BeginInvoke(delegate { MessageBox.Show(s); });
}
}
}
}
}
OK
源码下载:http://files.cnblogs.com/webabcd/Silverlight.rar
Tags:稳扎稳打 Silverlight 通信
编辑录入:爽爽 [复制链接] [打 印]- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTc...
- ››稳扎稳打Silverlight(54) - 4.0通信之对UDP协议的...
- ››稳扎稳打Silverlight(55) - 4.0通信之对UDP协议的...
- ››稳扎稳打Silverlight(56) - 4.0通信之与 WCF Data...
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››Silverlight for Symbian
- ››Silverlight3系列(四)数据绑定 Data Binding 1
更多精彩
赞助商链接