Клиент Twitter c # не может опубликовать сообщение из-за ошибки 417 - PullRequest
0 голосов
/ 04 января 2010

Я создаю твиттер-клиент без нуля, и на своей 64-битной машине дома я могу опубликовать нормально без проблем, но на моем 32-битном ноутбуке я получаю ошибку 417, когда прихожу опубликовать твит.

Я умею хорошо читать твиты, просто пишу, что, кажется, является проблемой. Я также добавил следующее, которое, как говорили некоторые люди, останавливает ошибку от получения безуспешно

        System.Net.ServicePointManager.Expect100Continue = false;

Я не уверен, что делать дальше, у кого-нибудь еще есть идеи? код для размещения ниже.

спасибо, матовый

       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 Ответ

0 голосов
/ 05 января 2010

Вы должны взглянуть на http://github.com/erans/twitter-csharp-library

Этот фрагмент был взят из файла twitter.cs на 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;
    }
...