0

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

我收到异常 195:缺少或无效参数。

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

我尝试了其他方法,但没有任何效果,我得到了同样的例外......

共享代码,简化后是这样的:

MediaLibrary 库 = 新的 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 更适合我的项目。

4

1 回答 1

2

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

问题是,如果您以现在的方式深入研究 SendTweetWithMedia,您将到达 TwitterService.cs,其中将调用 WithHammock,只是图像没有作为参数传递,所以它们会在那里丢失:)

我确实解决了这个问题,传递参数并添加

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);
    }

我会尝试看看我是否可以拉这个,以便其他人都可以有这个修复。

希望这可以帮助。

于 2013-06-17T14:38:15.223 回答