我正在尝试阅读用户的公共推特状态,以便我可以在我的Windows Phone应用程序中显示它。
我正在使用Scott Gu的例子: http://weblogs.asp.net/scottgu/archive/2010/03/18/building-a-windows-phone-7-twitter-application-using-silverlight.aspx
当我的代码从异步调用返回时,一旦我尝试使用e.Result,我就会收到“System.Security.SecurityException”。
我知道我的uri是正确的,因为我可以在浏览器中填充它并获得良好的结果。
这是我的相关代码:
public void LoadNewsLine()
{
WebClient twitter = new WebClient();
twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
twitter.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=krashlander"));
}
void twitter_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
XElement xmlTweets = XElement.Parse(e.Result); //exception thrown here!
var message = from tweet in xmlTweets.Descendants("status")
select tweet.Element("text").Value;
//Set message and tell UI to update.
//NewsLine = message.ToString();
//RaisePropertyChanged("NewsLine");
}
任何想法?
解: 我终于想出了这一个。我只是忘了取消注释: WMAppManifest.xml中的功能。 一旦我这样做,安全例外就消失了。
答案 0 :(得分:4)
我终于想到了这一个。我只是忘了取消注释:
<Capability Name="ID_CAP_NETWORKING"/>
WMAppManifest.xml中的功能。一旦我这样做,安全例外就消失了。
答案 1 :(得分:3)
你应该看看TweetSharp。它对我来说很有效。 http://tweetsharp.codeplex.com
答案 2 :(得分:0)
我在自己的应用上点击类似内容。这是我的解决方案:
WebClient twitter=new WebClient();
twitter.OpenReadCompleted += new OpenReadCompletedEventHandler(twitter_OpenReadCompleted);
twitter.OpenReadAsync(new Uri("http://api.twitter.com..."));
和
void twitter_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) {
...
}
答案 3 :(得分:0)
我尝试了你发布的代码并且没有抛出任何异常,获得了预期的结果,一切似乎都很好。因此,您的电脑上必须有一些东西,网络连接(代理等)导致这种情况。什么是详细的例外,StackTrace?也许Simple use of WebClient on Windows Phone 7 throws a NetworkError会对你有帮助吗?
答案 4 :(得分:0)
当以任何方式交叉引用线程时,通常会发生此异常。在这种情况下,它可能与Webclient始终在UI线程上返回有关。您可以通过使用HttpWebRequest来解决问题(无论如何,这是更好的性能)。 检查msdn论坛上的this主题以获取更多信息
答案 5 :(得分:0)
您可能需要查看此处提供的应用程序。此应用程序会显示指定用户名的推文,并允许您将推文导出为pdf,excel,word,image等。
http://blogs.gcpowertools.co.in/2012/05/activereporting-with-twitter.html