2011-07-13 85 views
3

我有以下方法:Ruby HTTP發佈請求 - 內容類型?

http_client=Net::HTTP.new(@uri.host,@uri.port) 
request=Net::HTTP::Post.new(@uri.request_uri) 
request.set_form_data(params) 
request.basic_auth(@user,@pass) 
result = http_client.request(request) 

# 
# !!! .content_type does not exist !!! 
# 
result=case result.content_type 
    when "application/json" JSON.parse(result,{:symbolize_names => true}) 
    when "application/xml" XMLHELPER.parse(result) 
end 
result 

那麼如何確定是由服務器發送的內容類型?

回答

3

由於您已將result指定給響應正文(字符串),因此撥打result.content_type即可得到NoMethodError

[...] 
response = client.request(request) 

result = case response.content_type 
    when "application/json" JSON.parse(response.body, {:symbolize_names => true}) 
    when "application/xml" XMLHELPER.parse(response.body) 
end 
+0

對不起。那是我的錯。 Iv'e將它編入了編輯框 - 下一次我將複製粘貼它;) - >更正版本請參閱第一篇文章。 – gorootde

+0

如果'result.content_type'爲'nil',則服務器不發送一個。 –