用Ruby和Faraday gem发布请求,并从Python翻译过来

用Ruby和Faraday gem发布请求,并从Python翻译过来,python,ruby-on-rails,ruby,faraday,Python,Ruby On Rails,Ruby,Faraday,我想用法拉第宝石来发布一个请求 我收到信用卡信息并将其发布到URL。但是,出于某种原因,我的回答是“404” 我的问题是关于我获得回复的方式,以及我是否正确地为标题和正文输入了信息 因为这个请求没有RubyAPI,只有Python,所以我通过将Python转换为Ruby来发出请求 这是Ruby代码: conn2 = Faraday.new(:url => 'https://api.iamport.kr/subscribe/payments') response2 = conn2.po

我想用法拉第宝石来发布一个请求

我收到信用卡信息并将其发布到URL。但是,出于某种原因,我的回答是“404”

我的问题是关于我获得回复的方式,以及我是否正确地为标题和正文输入了信息

因为这个请求没有RubyAPI,只有Python,所以我通过将Python转换为Ruby来发出请求

这是Ruby代码:

conn2 = Faraday.new(:url => 'https://api.iamport.kr/subscribe/payments')

  response2 = conn2.post do |req|
    req.url '/onetime'
    req.headers['X-ImpTokenHeader'] = "token secret will be put here"
    req.body = '{ "token": "abcdefg", "merchant_uid": "merchant_144609705412313",
    "amount" : "1000", "card_number" : "555555555555", "expiry": "0520", "birth": "878787", 
    "pwd_2digit": "99"}'
  end

  @body2 = response2.body
  @status2 = response2.status
以及Python代码:

  def onetime(self, **params):
        url = 'https://api.iamport.kr/subscribe/payments/onetime/'
        keys = ['token', 'merchant_uid', 'amount', 'vat', 'card_number', 'expiry', 'birth', 'pwd_2digit',
                'remember_me', 'customer_uid', 'buyer_name', 'buyer_email', ]
        data = {k: v for k, v in params.items() if k in keys}


    def _post(self, url, data=None, headers=None):
        data, headers = self._set_default(data, headers)
        response = requests.post(url, headers=headers, data=data)

        return self._parse_response(response)

    def _set_default(self, data, headers):
        if not data:
            data = {}

        if not headers:
            headers = {}
        headers[self.TOKEN_HEADER] = self._access_code

        return data, headers

我非常肯定,通过编写
req.url'/onetime'
可以有效地请求
https://api.iamport.kr/onetime
。这非常容易调试,但是顺便说一下,只需检查响应对象以了解请求的详细信息,它现在正在工作!!现在,我得到了它的回应。“\uce012\ucXX\ucXX…”我想这告诉了我一些事情,但不确定它到底告诉了我什么。有这种类型的字符串的翻译程序吗?(我认为这应该是Stackoverflow中的另一个问题!)我还读到,通过在url中添加“_token=?”+access_token来传递令牌信息也是可以的。它起作用了!(:我认为您可以安全地删除这个问题,因为这是一个简单的印刷错误。我非常确定,通过编写
req.url'/onetime'
您可以有效地请求
https://api.iamport.kr/onetime
。这非常容易调试,但顺便说一句,只需检查响应对象以了解请求的详细信息它现在正在工作!!现在,我得到了一个来自它的响应。“\uce012\ucXX\ucXX…”我想这告诉了我一些事情,但不确定它到底告诉了我什么。有这种类型的字符串的转换器吗?(我想这应该是Stackoverflow中的另一个问题!)我还读到一些信息,通过添加“\u token=”来传递令牌信息也可以+访问url中的令牌。它有效!(:我认为您可以安全地删除此问题,因为这是一个简单的印刷错误。