大佬教程收集整理的这篇文章主要介绍了Windows Phone 7 plurk App,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
摘要:Windows Phone 7 plurk App
用Windows Phone 7 写网络应用程序一定要先研究 http 相关的运行,写一个 plurk API 应用应该是最简单的。
当然,我早就写过 plurk API 的程序了,公司的网页每天也一直用 plurk 发布新的消息,所以在这里 plurk API 不是重点,重点是 http 。
而最常用、最简单的 http 大家一定都会想到 WebClient,所以打开 Visual studio 2010 Express for Windows Phone ,拉好 TextBox 和 Button,就开始写了.....
WebClient client = new WebClient();
首先,plurk login 要用 https,很抱歉,WebClient要跑https 通常会先加一行
servicePointManager.ServerCertificateValidationCallBACk = delegate { return true; };
呃.......怎么打下去后下面多一条红线!?!?!?
不会吧......... WP7 不支持 https? 那怎么登入?????
.......
.......
找了好久才听说??Silverlight 不支持 WebClient 执行 https,所以开始想偷吃步,既然不能执行 https 那就改 http 吧.......
马上下手
public partial class MainPage : PhoneApplicationPage { WebClient client = new WebClient(); public MainPage() { InitializeComponent(); client.Download@R_489_10495@ngCompleted += new Download@R_489_10495@ngCompletedEventHandler(client_Download@R_489_10495@ngCompleted); client.Download@R_489_10495@ngAsync(new Uri("http://www.plurk.com/API/Users/login?api_key=XXX&username=YYY&password=ZZZ")); } void client_Download@R_489_10495@ngCompleted(object sender,Download@R_489_10495@ngCompletedEventArgs E) { textBox1.Text = e.Result; } }
嘿嘿~~ 看到东西了
我不知道为什么 http 可以执行,反正他就是过了,让我登入了,所以第一步成功了,接下来要做发噗的功能。
写到这里顺便提一下,我想要让 TextBox可以断行的功能,在这里找到了灵感,我融合了三造的建议,写下了?
textwrapping="Wrap" 和 ?AcceptsReturn="True" 才让 TextBox 有 Multiline 的模式,感谢他们。
再来,发噗必先有 Cookie,所以我在? Download@R_489_10495@ngCompleted 那行之前很帅气的写了一行
@R_489_10495@ng cookie = client.ResponseHeaders["Set-Cookie"].Split(‘;‘)[0];
因为这行是凭借着多年的经验才能直觉反应的不经思考的非常帅气的找到以前写好的project轻松的copy过来。
但,很快的,我发现这行没用................
我只在Download@R_489_10495@ngCompleted 前加一行刚得到的 Cookie而已就给我这个画面..... Or22
client.Headers["Cookie"] = "plurkcookiea="p/Sfal9Fy4qo7s..............";
他给我这个错误:"The ‘Cookie‘ header cAnnot be modified directly.rnParameter name: name"
心情非常沮丧,此时这篇文章已经写了快一星期了.....唉.......
看样子,WebClient ?1:不支持SSL,2:不支持 Cookie,3:不支持同步...... 啥米碗糕....我想放弃了... ~>"<~
网络上好像找不到WP7 这个Exception的解法,只看到WebClient是base on XMLhttprequest 所以不支持 Cookie,很抱歉,我真的完全不懂.....
除了这个以外,这当中还碰过Concurrent I/O operations exception
看来开发wP7的路途可能相当艰辛。
ok....山不转路转,改用 httpWebrequest 可以了吧.....
这里面也牵涉到Cross Thread的问题,又花了相当的时间,在睡眼惺忪的情况下写下了下面这段code
//因为这里已经不会回传任何东西了,所以设void public void GetPage(@R_489_10495@ng url) { httpWebrequest request = (httpWebrequest)Webrequest.Create(url); request.CookieContainer = new CookieContainer(); //全域变量 Cookie cookie; if (cookie != null) request.CookieContainer.Add(new Uri(url),cookiE); request.Method = "GET"; request.beginGetResponse(delegate(IAsyncResult ar) { //异步得到Response using (WebResponse response = request.EndGetResponse(ar)) { //全域变量 @R_489_10495@ng status; if (status == "login") { cookie = request.CookieContainer.GetCookies(request.requesturi)["plurkcookiea"]; //跨执行续执行变更TextBox.Text textBox2.Dispatcher.beginInvoke(()=>{ textBox2.Text = "welcome"; }); } } },null); }
这过程中又经过了三天三夜了也历经过许多问题....包含UrlEncode 的问题可以用 System.Uri.EscapeUri@R_489_10495@ng 代替。
还有遇到奇怪的问题,他说要把?
奇迹!!!!!
我出运了!!!!!!!
他发噗了!!!!!!! ?
?(TO EVERY LITTLE GOOD THING IN LIFE,?.............. Cheers! )
后来再 Review 一下 code,其实?httpWebrequest 也可以用 https,直接把 http 改 https 就好了,
再回去看 WebClient,也一样,也适用,完全不需要顾虑什么,也不需要加其他程序,直接打https就对了。
这是中断时查看 request.requesturi.Port 跑 80还是443。
说也奇怪,我把刚刚的dess副@L_450_26@名改回去,也没发生什么错误了,难道一切都是.............
Ok! 接下来还有一大段路要走,包含 利用 json2XML 查看、回复朋友的噗,还有上传照片....等噗浪其他功能,我现在已经没有体力再写下去了....改天吧!!!
范例下载:
?? ? ??
ps1: plurk 的 api_key 需要自行申请
ps2: Or22 是 OTZ 的 3D版
ps3: WindowsPhoneApplication7.zip 真的是 Version 7
ps4:以上可能会在 2010/9/16 以后不适用
以上是大佬教程为你收集整理的Windows Phone 7 plurk App全部内容,希望文章能够帮你解决Windows Phone 7 plurk App所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。