2010-01-04 5 views
0

Je crée un client Twitter sans rien et sur ma machine 64bit à la maison, je peux poster très bien aucun problème, mais sur mon ordinateur portable 32 bits, je reçois une erreur 417 quand Je viens poster un tweet.Twitter C# client incapable de poster en raison de l'erreur 417

Je suis capable de lire les tweets fin, affichant seulement cela semble être un problème que j'ai mis dans la suite que certaines personnes ont dit arrêter l'erreur de accuring sans chance

 System.Net.ServicePointManager.Expect100Continue = false; 

Je ne suis pas sûr que Est-ce que quelqu'un d'autre a des idées? le code d'affichage est ci-dessous.

merci mat

 string aUrl = "http://twitter.com/statuses/update.xml"; 

     client.Credentials = new NetworkCredential(_username, _password); 

     System.Net.ServicePointManager.Expect100Continue = false; 

     byte[] tweetBytes = System.Text.Encoding.UTF8.GetBytes("status=" + tweet); 

     client.UploadData(aUrl,tweetBytes); 

     return true; 
+1

je sais que ce n'est pas votre question, mais j'examineraient TweetSharp trouvé ici http://tweetsharp.com/ –

+0

merci, mais vouloir créer tout à partir de zéro. Partie d'une courbe d'apprentissage –

Répondre

0

Vous devriez jeter un oeil à http://github.com/erans/twitter-csharp-library

Cet extrait a été prise à partir du fichier twitter.cs sur GitHub.

/// <summary> 
    /// Executes an HTTP POST command and retrives the information.  
    /// This function will automatically include a "source" parameter if the "Source" property is set. 
    /// </summary> 
    /// <param name="url">The URL to perform the POST operation</param> 
    /// <param name="userName">The username to use with the request</param> 
    /// <param name="password">The password to use with the request</param> 
    /// <param name="data">The data to post</param> 
    /// <returns>The response of the request, or null if we got 404 or nothing.</returns> 
    protected string ExecutePostCommand(string url, string userName, string password, string data) { 
     System.Net.ServicePointManager.Expect100Continue = false; 

     WebRequest request = WebRequest.Create(url); 
     if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password)) { 
      request.Credentials = new NetworkCredential(userName, password); 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.Method = "POST"; 

      if (!string.IsNullOrEmpty(TwitterClient)) { 
       request.Headers.Add("X-Twitter-Client", TwitterClient); 
      } 

      if (!string.IsNullOrEmpty(TwitterClientVersion)) { 
       request.Headers.Add("X-Twitter-Version", TwitterClientVersion); 
      } 

      if (!string.IsNullOrEmpty(TwitterClientUrl)) { 
       request.Headers.Add("X-Twitter-URL", TwitterClientUrl); 
      } 


      if (!string.IsNullOrEmpty(Source)) { 
       data += "&source=" + HttpUtility.UrlEncode(Source); 
      } 

      byte[] bytes = Encoding.UTF8.GetBytes(data); 

      request.ContentLength = bytes.Length; 
      using (Stream requestStream = request.GetRequestStream()) { 
       requestStream.Write(bytes, 0, bytes.Length); 

       using (WebResponse response = request.GetResponse()) { 
        using (StreamReader reader = new StreamReader(response.GetResponseStream())) { 
         return reader.ReadToEnd(); 
        } 
       } 
      } 
     } 

     return null; 
    }