2011-07-13 73 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',则服务器不发送一个。 –