在上一篇中介绍到“合一微博”主要是调用腾讯、新浪的开放API实现的,实现这一切都是要请求网络资源的。下面简单介绍一下在WP7中怎样进行网络请求。
在wp7中对网络操作没有同步操作,都是异步的,这和Web有点不同。
方案一:使用HttpWebRequest和HttpWebResponse对象
其基本步骤如下:
1,实例化一个HttpWebRequest对象
2,开始请求
3,实例化一个HttpWebResponse对象来接受请求回来的对象
4,实例化一个流来处理上一步的response
5,对上一步的流进行处理,这就要你最想要的喽
6,记得把流关闭
7,关闭response响应
示例代码:
public void GetRequest()
{
//实例化一个HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com.hk/");
//开始执行请求
request.BeginGetResponse((result) =>
{
//实例化一个HttpWebResponse对象来接受请求回来的数据
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
//实例化一个流来处理response
using (System.IO.StreamReader sr = new StreamReader(response.GetResponseStream()))
{
//do something 对Stream 进行处理
//......
//......
//关闭response响应
response.Close();
}
}, request);
}
方案二:使用WebClient对象进行网络请求。
WebClient是请求远程资源的最简洁的方法,直接返回字符串。
它实际上是对HttpWebRequest的封装,隐藏了一些细节,而HttpWebRequest则可以让你了解请求的过程。
在实践过程中发现,对于一般的Http请求,WebClient比HttpWebRequest 好很多!
示例代码:
WebClient client = new WebClient();
client.DownloadStringAsync(new Uri("http://www.google.com.hk/"));
//匿名委托来处理返回来的字符串
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler((sender, e) =>
{
//do something 对e.Result 进行处理。e.
Result就是你要的东西。
//......
//......
});
}
方案三(推荐使用):使用第三方框架Hammock(吊床)
Hammock是个免费开源的框架,托管在github上 对网络操作进行了很好的封装,包含OAuth,不过只是OAuth1.0 。tweetsharp中也用到了它。
下载地址:https://github.com/danielcrenna/hammock
使用步骤如下:
1,实例化RestClient对象
2,设置该对象的一些属性,如Authority等
3,实例化一个RestRequest对象
4,添加RestRequest的请求参数
5,使用RestClient实例的BeginRequest方法进行异步请求
6,处理回调函数
实例代码:
RestClient client = new RestClient();
RestRequest request = new RestRequest();
request.Path = "http://www.google.com.hk/";
request.Method = WebMethod.Get;
request.Encoding = Encoding.UTF8;
client.BeginRequest(request, new RestCallback((req, response, userState) =>
{
//do something 对response.Content 进行处理。
response.Content就是你想要的东西
//......
//......
}));
}
原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/03/20/2407755.html
出处:http://www.cnblogs.com/xumingxiang
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任