【问题标题】:How do I read a public twitter feed using .Net (on Windows Phone)如何使用 .Net(在 Windows Phone 上)阅读公共 Twitter 提要
【发布时间】:2011-01-01 20:44:17
【问题描述】:

我正在尝试读取用户的公开 Twitter 状态,以便在我的 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 中的功能。 一旦我这样做了,安全异常就消失了。

【问题讨论】:

  • Twitter 没有限制您每小时/每天可以使用其端点的次数吗?也许你已经达到极限了?另外,您可以尝试提琴手,看看您是否可以捕获原始请求。 PS,你的代码对我有用。
  • 我应该还没有达到任何限制。没有多次调用它。
  • 我也遇到了同样的错误..但是在我的 WIn 7 (sl 4) 应用程序中找不到 ... anyhelp ??如何解决这个问题? ??我还在普通的 silverlight 4 应用程序上尝试了相同的代码......它引发了安全异常......

标签: c# .net windows-phone-7 twitter


【解决方案1】:

我终于想通了。我只是忘记取消注释:

      <Capability Name="ID_CAP_NETWORKING"/>

WMAppManifest.xml 中的功能。一旦我这样做了,安全异常就消失了。

【讨论】:

    【解决方案2】:

    您应该查看 TweetSharp。它对我来说效果很好。 http://tweetsharp.codeplex.com

    【讨论】:

    • 看起来很有趣,但我更愿意在没有任何 3rd 方代码的情况下执行此操作。我只是想阅读我拥有的用户的公共状态(krashlander)如果可能的话,我希望避免任何授权。
    • Tweetsharp 已移至 github 和 nuget,但最新版本尚不支持 WP。 nuget.org/List/Packages/TweetSharp tweetsharp.com 也不再可用。项目看起来已经失效了。
    • 是的,它几乎已经死了。不久前,我与主要开发人员 Crena(?)聊天。真可惜。他仍然愿意捐款。
    【解决方案3】:

    我在自己的应用上遇到了类似的问题。这是我的解决方案:

    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) {
       ...
    }
    

    【讨论】:

    • 仍然得到错误。从上面的cmets判断,可能是windows phone的问题。
    【解决方案4】:

    我尝试了您发布的代码,没有抛出异常,得到了预期的结果,一切似乎都很好。所以你的电脑上一定有什么东西,网络连接(代理等)导致了这种情况。什么是详细异常,StackTrace?也许Simple use of WebClient on Windows Phone 7 throws a NetworkError 会帮助你?

    【讨论】:

      【解决方案5】:

      此异常通常在以任何方式交叉引用线程时发生。在这种情况下,它可能与 Webclient 总是在 UI 线程上返回有关。您可能可以通过使用 HttpWebRequest 来解决问题(无论如何,这在性能方面会更好)。 查看 msdn 论坛上的this 线程以获取更多信息

      【讨论】:

      • 我一有机会就试试这个。
      【解决方案6】:

      您可能想查看此处提供的应用程序。此应用程序向您显示指定用户名的推文,还允许您将推文导出为 pdf、excel、word、图像等。

      http://blogs.gcpowertools.co.in/2012/05/activereporting-with-twitter.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-15
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        相关资源
        最近更新 更多