Rails 如何利用 Rails 实现一个类似 curl 功能的 API

lzm420241 · 2016年03月10日 · 最后由 lzm420241 回复于 2016年03月10日 · 2662 次阅读

我在实现一个微信授权登录的功能,网上找到很多代码都是没有注释的,没怎么看懂,但是微信授权中的整个思路还是理解,我用 php 能实现出来,其中 php 里面含有 curl 的 api,但是在 rails 里面一直没找到这个 api,只能自己模拟 curl 这个功能,但是不知道如何实现这个 API?

你只是需要一个 httpclient 吧

#1 楼 @kikyous 用 rails 模拟一个 httpclient,每次从微信得到 code,模拟一个请求向公众号发送,返回 json 的数据

微信开发看这里 https://github.com/Eric-Guo/wechat 你想要的都有

#4 楼 @kikyous 这个之前看到过,但是里面代码注释太少了,看不懂啊,我是打算就从里面源码抽出认证的那块功能

#5 楼 @dudu_zzzz 就是这个。你咋知道这个的?貌似 ruby 里面就实现了啊?我没学过 ruby,直接搞 rails 的

学 ruby 的时候,用这个写小爬虫玩,

类似这样的吧

def push
      @uri = URI('https://api.weixin.qq.com/cgi-bin/menu/create?access_token='+@token)
      req = Net::HTTP::Post.new(@uri, initheader = {'content-type'=>'application/json'})
      req.body = @json

      res = Net::HTTP.start(@uri.hostname,@uri.port,:use_ssl => true) do |http|
        http.request(req)
      end

      res
    end

#9 楼 @jyz19880823 加个 timeout 就完美了

#9 楼 @jyz19880823 我觉得应该这样写

require 'net/http'
def oauth
    @code =  Oauth.new[params.code]
    @url = URI(''https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=appserect&code='+@code+'&grant_type=authorization_code'')
  res = Net::HTTP.get_response(@url)
  #get access_token and openid
  puts res.body if res.is_a?(Net::HTTPSuccess)
end

#11 楼 @lzm420241 为什么不加 timeout?

#12 楼 @pathbox 那还不如在 if 后面加 else,另外我们请求的数据,如果没有数据,说明没有请求成功啊,这是用来 test 的 demo

#12 楼 @lzm420241 开发的时候如果 timeout 了会有转向链接的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号