在Windows Phone系统中,通过HttpWebRequest类可以很容易的发送网络请求,获取网络数据。HttpWebRequest是异步操作,不会堵塞主线程。
1.通过HttpWebRequest.CreateHttp()方法可以创建一个HttpWebRequest,下面代码简单实现发送一个GET请求。
httpGet
public void httpGet()
{
try
{
//请求地址
String url = "http://www.2cto.com/
";
//创建WebRequest类
HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(url));
//设置请求方式GET POST
request.Method = "GET";
//返回应答请求异步操作的状态
request.BeginGetResponse(responseCallback, request);
}
catch (WebException e)
{
//网络相关异常处理
}
catch (Exception e)
{
//异常处理
}
}
2.应答数据接收部分。
responseCallback
private void responseCallback(IAsyncResult result)
{
try
{
//获取异步操作返回的的信息
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
//结束对 Internet 资源的异步请求
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
//解析应答头
//parseRecvHeader(response.Headers);
//获取请求体信息长度
long contentLength = response.ContentLength;
//获取应答码
int statusCode = (int)response.StatusCode;
string statusText = response.StatusDescription;
//应答头信息验证
using (Stream stream = response.GetResponseStream())
{
//获取请求信息
StreamReader read = new StreamReader(stream);
string msg = read.ReadToEnd();
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
textBlock1.Text = msg;
});
}
}
catch (WebException e)
{
//连接失败
}
catch (Exception e)
{
//异常处理
}
}
通过HttpWebResponse可以获取返回的数据,在获取数据后,要想将数据显示到界面中,这里要主要一个问题。由于
HttpWebRequest是异步操作,所以这里应该有一个线程来处理网络,大家都知道Windows
Phone中在线程里是不能操作UI的,这个需要交个UI主线程来处理,所以代码中用到了
Deployment.Current.Dispatcher.BeginInvoke。
3.上面是简单的GET请求,POST请求和GET请求相比,多了一个发送请求体的操作过程。以下代码为POST请求,应对部分操作函数仍然是responseCallback。
httpPost
public void httpPost()
{
try
{
//请求地址
String url = "http://www.2cto.com/
";
//创建WebRequest类
HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(url));
//设置请求方式GET POST
request.Method = "POST";
//返回应答请求异步操作的状态
request.BeginGetRequestStream(requestCallback, request);
}
catch (WebException e)
{
//网络相关异常处理
}
catch (Exception e)
{
//异常处理
}
}
private void requestCallback(IAsyncResult result)
{
try
{
//获取异步操作返回的的信息
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
//结束对 Internet 资源的异步请求
StreamWriter postStream = new StreamWriter(request.EndGetRequestStream(result));
postStream.WriteLine("作者:宇之乐");
postStream.WriteLine("");
//返回应答请求异步操作的状态
request.BeginGetResponse(responseCallback, request);
}
catch (WebException e)
{
//异常处理
}
catch (Exception e)
{
//异常处理
}
}
分享到:
相关推荐
HttpWebRequest详解HttpWebRequest详解HttpWebRequest详解
window phone WebClient和HttpWebRequest 并解决gb2312乱码问题
httpwebrequest调用webservice返回数据
httpwebrequest 封装类
主要介绍了C#中HttpWebRequest的用法,以实例的形式详细叙述了HttpWebRequest类中GET与POST的用法,非常具有参考借鉴价值,需要的朋友可以参考下
1.这是一个用HttpWebRequest类构建完整Http多部请求上传文件的示例 2.上传地址是金山文档预览的地址,所以,只要上传的是word、pdf、excel一类的文档,可以通过返回的地址直接在线预览,是一种偷懒的文档在线浏览...
C#中HttpWebRequest使用介绍 GET HTTP HTTPS 请求
一个很实用的例子,注意要用OFFICE 2007
使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 timeouts, cookies, headers, protocols。另一个好处是HttpWebRequest类不会阻塞UI线程。例如,当您从响应很慢的API服务器下载大文件时,您的应用...
C#(也称Csharp)在多线程下并发执行HTTP请求的实现,采用C#封装HttpWebRequest类开发的多线程并发采集程序源码文档,文档中详细说明了HttpWebRequest并发HTTP请求实现网站采集的方法,经过测试同时并发1000+不是问题...
C# 多线程基本于httpwebrequest实现的下载功能 每个线程均可以通过事件追踪情况
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
使用HttpWebRequest访问网页
使用 HttpWebRequest发送自定义POST请求
本文将讲述如何采用HttpWebRequest方式每次读取固定大小数据片段(如4KB)发送至服务器,为大文件上传提供解决方案,本文还将详细讲述如何将“文件上传”功能做为用户自定义控件,实现模块重用。
本文将讲述如何采用HttpWebRequest方式每次读取固定大小数据片段(如4KB)发送至服务器,为大文件上传提供解决方案,本文还将详细讲述如何将“文件上传”功能做为用户自定义控件,实现模块重用。
.NET中封装静态类通过HttpWebRequest实现post、get、文件传输。
C#使用HttpWebRequest自动更新客户端应用程序
httpwebrequest抓取页面小工具