无法在Windows Phone中使用SendTweetWithMediaOptions

时间:2013-06-17 12:57:33

标签: windows-phone tweetsharp

我在Windows Phone项目中使用TweetSharp,无论我做什么,我都不能用媒体发布推文。

我收到例外195:参数缺失或无效。

我读到通常这可能是无效数据的原因,比如我提供的流无效。

我尝试过其他方式,但没有任何作用,我得到同样的例外......

共享代码,简化如下:

MediaLibrary library = new MediaLibrary();

        var picture = library.Pictures[0];

        var options = new SendTweetWithMediaOptions
            {
                Images = new Dictionary<string, Stream> { { picture.Name, picture.GetImage() } },
                Status = TweetTextBox.Text,
            };


        AutentificateTwitterService().SendTweetWithMedia(options, (status, response) =>
                                    _dispatcher.BeginInvoke(() =>
                                        {
                                            DonePosting();

                                            if (response.StatusCode == HttpStatusCode.OK)
                                            {
                                                _lastPostId = status.Id;
                                            }
                                            else
                                            {
                                                MessageBox.Show(String.Format(
                                                        "There was an error sending image to Twitter{0}{1}",
                                                        Environment.NewLine,
                                                        response.Error));
                                            }
                                       })); 

我尝试与linqtotwitter共享并且工作但是TweetSharp更适合我的项目。

1 个答案:

答案 0 :(得分:2)

最后一段时间后我发现了这个问题,我确信还有其他更多WP和SendTweetWithMediaOptions相关的问题。

问题是,如果你现在的方式深入了解SendTweetWithMedia,你将会进入调用WithHammock的TwitterService.cs,只是图像不会作为参数传递,所以它们会在那里迷路:)

我确实修复了这个传递参数并添加

private void WithHammock<T>(WebMethod method, Action<T, TwitterResponse> action, string path, IDictionary<string, Stream> files, params object[] segments) where T : class
    {
        var url = ResolveUrlSegments(path, segments.ToList());
        var request = PrepareHammockQuery(url);
        request.Method = method;
        request.QueryHandling = QueryHandling.AppendToParameters;
        foreach (var file in files)
        {
            request.AddFile("media[]", file.Key, file.Value);
        }
        WithHammockImpl(request, action);
    }

我会试着看看我是否可以拉这个以便其他人都可以解决这个问题。

希望这有帮助。