2016-05-09 13 views
1

Ich benutze unten angegebenen Code, um den Tweet auf Twitter zu posten. Aber wenn wir es auf den Server hochladen, dann werden Tweets mit Sonderzeichen (!,:, $ Etc) nicht auf Twitter veröffentlicht. Dieser Code arbeitet im lokalen SystemWie schreibe ich spezielle Character tweet mit asp.net API?

string key = ""; 
string secret = ""; 
string token=""; 
string tokenSecret=""; 
try 
{   
string localFilename = HttpContext.Current.Server.MapPath("../images/").ToString(); 

      using (WebClient client = new WebClient()) 
      { 
       client.DownloadFile(imagePath, localFilename); 
      } 
      var service = new TweetSharp.TwitterService(key, secret); 
      service.AuthenticateWith(token, tokenSecret); 
      // Tweet wtih image 
      if (imagePath.Length > 0) 
      { 
       using (var stream = new FileStream(localFilename, FileMode.Open)) 
       { 
        var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions 
        { 
         Status = message, 
         Images = new Dictionary<string, Stream> { { "name", stream } } 
        }); 
       }     
      } 
      else // just message 
      { 
       var result = service.SendTweet(new SendTweetOptions 
       { 
        Status = HttpUtility.UrlEncode(message) 
       }); 
      } 

    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 

Antwort

0

Der Status/update_with_media API Endpunkt ist eigentlich veraltet durch Twitter Fein- und sollte nicht verwendet werden (https://dev.twitter.com/rest/reference/post/statuses/update_with_media).

TweetSharp hat auch einige Probleme mit dieser Methode, wenn der Tweet enthält ein 'Sonderzeichen' UND ein Bild (funktioniert gut mit beiden, aber nicht beides). Ich weiß nicht warum und ich konnte es nicht beheben, es hat etwas mit der OAuth-Signatur zu tun, da bin ich mir ziemlich sicher.

Als Lösung empfehle ich Ihnen TweetMoaSharp (eine Gabel von TweetSharp) zu verwenden. Es wurde aktualisiert, um die neuen Twitter-APIs für den Umgang mit Medien in Tweets zu unterstützen, und es wird in dieser Situation funktionieren, wenn Sie die neuen Sachen verwenden.

Grundsätzlich laden Sie jedes Medienelement mit einer neuen UploadMedia-Methode hoch, und Sie erhalten eine Medien-ID. Sie verwenden dann die normale "SendTweet" -Methode und stellen eine Liste der Medien-IDs zusammen mit den anderen Statusdetails bereit. Twitter wird die Medien bei der Veröffentlichung an den Tweet anhängen, und es wird funktionieren, wenn sowohl Sonderzeichen als auch Bilder vorhanden sind.

0

Neben TweetMoaSharp Sie Tweetinvi mit dem folgenden Code verwenden:

var binary = File.ReadAllBytes(@"C:\videos\image.jpg"); 
var media = Upload.UploadMedia(binary); 

var tweet = Tweet.PublishTweet("hello", new PublishTweetOptionalParameters 
{ 
    Medias = {media} 
}); 
Verwandte Themen