Размещение на Tumblr с помощью oAuth и C #

Я пытаюсь разработать простое приложение для взаимодействия с Tumblr с помощью API версии 2. Я могу пройти каждый шаг в потоке oAuth (благодаря документации, найденной в Twitter) и получить авторизованный и аутентифицированный токен и секрет. Но когда дело доходит до публикации, я получаю 401 несанкционированную ошибку. Это соответствующий фрагмент кода:

    private void post_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        url = new Uri("http://api.tumblr.com/v2/blog/*myblog*.tumblr.com/post");

        Random random = new Random();
        nonce = random.Next(1234000, 9999999).ToString();

        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();

        string method = "POST";

        StringBuilder sb = new StringBuilder();
        sb.AppendFormat("{0}&", method);
        sb.AppendFormat("{0}&", upperCaseUrl(HttpUtility.UrlEncode(url.ToString())));
        sb.AppendFormat("body%3D{0}%26", upperCaseUrl(HttpUtility.UrlEncode(textBox.Text)));
        sb.AppendFormat("oauth_consumer_key%3D{0}%26", consumerKey);
        sb.AppendFormat("oauth_nonce%3D{0}%26", nonce);
        sb.AppendFormat("oauth_signature_method%3D{0}%26", "HMAC-SHA1");
        sb.AppendFormat("oauth_timestamp%3D{0}%26", timestamp);
        sb.AppendFormat("oauth_token%3D{0}%26", token);
        sb.AppendFormat("oauth_version%3D{0}%26", "1.0");
        sb.AppendFormat("type%3D{0}", "text");

        System.Diagnostics.Debug.WriteLine(sb.ToString());

        string signingKey = consumerSecret + '&' + secret;

        HMACSHA1 signing = new HMACSHA1(Encoding.ASCII.GetBytes(signingKey));
        byte[] bytearray = Encoding.ASCII.GetBytes(sb.ToString());
        MemoryStream stream = new MemoryStream(bytearray);
        signature = Convert.ToBase64String(signing.ComputeHash(stream));

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

        StringBuilder header = new StringBuilder();
        header.Append("OAuth ");
        header.AppendFormat("oauth_consumer_key=\"{0}\", ", consumerKey);
        header.AppendFormat("oauth_token=\"{0}\", ", token);
        header.AppendFormat("oauth_nonce=\"{0}\", ", nonce);
        header.AppendFormat("oauth_timestamp=\"{0}\", ", timestamp);
        header.AppendFormat("oauth_signature_method=\"{0}\", ", "HMAC-SHA1");
        header.AppendFormat("oauth_version=\"{0}\", ", "1.0");
        header.AppendFormat("oauth_signature=\"{0}\"", upperCaseUrl(HttpUtility.UrlEncode(signature)));

        System.Diagnostics.Debug.WriteLine(header.ToString());

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

        request.Method = WebRequestMethods.Http.Post;

        request.Headers.Add("Authorization", header.ToString());

        try
        {
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            StreamReader reader = new StreamReader(response.GetResponseStream());

            if (reader.ReadToEnd() == "201: Created")
            {
                control.Invoke((MethodInvoker)delegate
                {
                    statusText.Text = "Post successfully sent!";
                });
            }
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.Message);
        }
    }

Функция вызывается при нажатии на кнопку и получении основного текста из текстового поля. Часть подписи верна, поскольку она была протестирована с другими службами (Twitter и т.д.) и по-прежнему предоставляет действительные подписи для самого Tumblr. Заголовок Authorization почти тот же, что я использовал для запроса маркера и его авторизации, а базовая последовательность содержит только тип содержимого (в данном случае текст) и тело, кроме стандартных параметров oauth_ *. Я также проверил код с помощью инструментов, доступных на hueniverse.com, но все равно ничего.

Возможно, отсутствует заголовок HTTP или POSTing неверный запрос. Есть идеи? Спасибо.

-121--1719402- Настройка цвета текста кнопки с помощью стиля Мне не удалось задать цвет текста кнопки с помощью предопределенного стиля. Наверное, я упускаю что-то простое. Например, у меня есть кнопка: < Button android: id = «@ + id/calculate _ button»...

Мне не удалось задать цвет текста кнопки с помощью предопределенного стиля. Наверное, я упускаю что-то простое. Например, у меня есть кнопка:

    <Button
    android:id="@+id/calculate_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/calculate"
    android:background="@drawable/rounded_bottom_shape"
    android:padding="5dp"
    android:textAppearance="@style/CalcResultStyle">
    </Button>

И соответствующий стиль:

<style name="CalcResultStyle">
    <item name="android:textSize">12sp</item>
    <item name="android:textColor">#FFF</item>
</style>

Размер части работает нормально, но цвет не работает. Единственное решение, которое я нашел, это установить textColor на фактическую кнопку, что означает изменение цвета на ряде кнопок становится занозой. Я также предпочитаю задавать атрибут textColor в своих стилях, используя, например, ссылку на цвет, например @ color/Brown, но установка цвета с помощью ссылки или явно не имеет никакого значения.

13
задан ryandlf 23 September 2011 в 02:25
поделиться