2014-05-06 57 views
1

我能够执行get和post请求,但是当我尝试使用相同格式执行put请求时,我得到: Zlib :: DataError(无效块类型)ruby​​ oauth2 put请求返回无效块类型错误

这里是回溯

/Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:357:in `finish': invalid block type (Zlib::DataError) 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:357:in `finish' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:262:in `ensure in inflater' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:262:in `inflater' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:274:in `read_body_0' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:201:in `read_body' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:226:in `body' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http/response.rb:163:in `reading_body' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1412:in `block in transport_request' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1403:in `catch' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1376:in `request' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1369:in `block in request' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:852:in `start' 
from /Users/psi/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/net/http.rb:1367:in `request' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/faraday-0.9.0/lib/faraday/adapter/net_http.rb:80:in `perform_request' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/faraday-0.9.0/lib/faraday/adapter/net_http.rb:39:in `call' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/faraday-0.9.0/lib/faraday/request/url_encoded.rb:15:in `call' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/faraday-0.9.0/lib/faraday/rack_builder.rb:139:in `build_response' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/faraday-0.9.0/lib/faraday/connection.rb:377:in `run_request' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/oauth2-0.9.3/lib/oauth2/client.rb:90:in `request' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/oauth2-0.9.3/lib/oauth2/access_token.rb:107:in `request' 
from /Users/psi/.rvm/gems/ruby-2.0.0-p451/gems/oauth2-0.9.3/lib/oauth2/access_token.rb:128:in `put' 
from api_check.rb:50:in `<main>' 

这里是设置代码中使用的oauth2

require 'oauth2' 

client = OAuth2::Client.new(CLIENTID, CLIENTSECRET, 
    site: SITE, token_url: TOKENURL) 

token = client.client_credentials.get_token 

response = token.put(PATH, {body: {params1: PARAM1}}) 

进出口版本0.9.6 如果有什么WR与我正在做一个请求的方式,我没有迹象表明从错误日志。 如果需要更多信息,请告诉我。

+0

请代码,并回溯增加到帖子 –

+0

的Pastebin链接的应该是工作 – Phong

+0

这不是怎么这么之前加入这行工作 - 链接被压制,因为它们可能会失效。而且,人们不太可能去到你的链接,并且更有可能在阅读帖子时阅读它们。请将您的代码添加到帖子中。 –

回答

0

如果我使用不同的Faraday适配器(如EventMachine),则可以通过详细消息获取正确的OAuth2 :: Error异常,而不仅仅是中断。 要更改适配器,添加所需的适配器连接到Gemfile中并调用了OAuth2方法

Faraday.default_adapter = :em_http 
相关问题