Невозможно использовать SendTweetWithMediaOptions в Windows Phone
Я использую TweetSharp в проекте Windows Phone, и независимо от того, что я делаю, я не могу опубликовать твит с медиа.
Я получаю исключение 195: отсутствует или недействителен параметр.
Я читал, что обычно это может быть причиной неверных данных, например, поток, который я предоставляю, является недействительным.
Я пробовал другой способ, но ничего не работает, я получаю то же исключение...
Код общего доступа, упрощенный, выглядит так:
Библиотека MediaLibrary = 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 ответ
Наконец, через некоторое время я нашел проблему с этим, и я уверен, что другие проблемы, связанные с 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);
}
Я попробую и посмотрю, смогу ли я вытащить это, чтобы все остальные могли иметь это исправление.
Надеюсь это поможет.