Ruby / HTTParty: тайм-аут при добавлении канала в Google Reader с использованием его API - PullRequest
1 голос
/ 10 мая 2011

Я пытаюсь добавить подписку в Google Reader, используя ее API, однако получаю следующую ошибку:

срок выполнения истек

I 'У нас не было проблем с чтением (используя 'get') списка подписок или тегов.Но время ожидания при попытке добавить подпрограмму (используя 'post')

Код написан на Ruby on Rails, и я использую HTTParty для обработки связи с веб-службой.

Мой код выглядит следующим образом (я все еще новичок в Ruby / Rails, поэтому прошу прощения за любые плохие практики, включенные ниже. Я более чем рад, что они указали мне):Для справки вот как я получаю токен:

# Obtains a token from reader
# This is required to 'post' items
def get_token

    # Populate @auth
    get_auth

    # Prepare the query
    url = 'http://www.google.com/reader/api/0/token'
    headers = {"Content-type" => "application/x-www-form-urlencoded", "Authorization" => "GoogleLogin auth=#{@auth}" }

    # Execute the query
    @token = self.class.get(url, :headers => headers)

end

# Obtains the auth value.
# This is required to obtain the token and for other queries.
def get_auth

    # Prepare the query
    url = 'https://www.google.com/accounts/ClientLogin'
    query = { :service => 'reader', :Email => @username, :Passwd => @password }

    # Execute the query
    data = self.class.get(url, :query => query)

    # Find the string positions of AUTH
    auth_index = data.index("Auth=") + 5

    # Now extract the values of the auth
    @auth = data[auth_index,data.length]

end

Я был бы рад предоставить любую необходимую дополнительную информацию.

Заранее спасибо!

1 Ответ

0 голосов
/ 10 мая 2011

После большого количества возни, я нашел решение!

Мне просто пришлось установить Content-Length на "0".Ранее я задавал ему длину «запроса» в соответствии с классом PHP, на котором я его основывал ( greader.class.php ).Я упоминаю об этом только на тот случай, если у кого-то есть такая же проблема.

...