0

我从一个开发团队收到了以下代码:

curl -u EMAILADDRESS:PASSWORD -d "sender=NAME <EMAILADDRESS>&message=[Invite Link]&collector=COLLECTOR&subject=Test Invite&footer=My Custom Text [Unsubscription Link]"

我被告知上述工作正常。这是我在 Ruby 1.9.3 中使用httpartygem 翻译成的:

call= "/api/v2/emails/?survey=#{i}"    
puts collector_final_id
url= HTTParty.post("https://www.fluidsurveys.com#{call}",
  :basic_auth => auth,
  :headers => { 'Content-Type' => 'application/x-www-form-urlencoded','Accept' => 'application/x-www-form-urlencoded' },
  :collector => collector,
  :body => {
    "subject" => "Test Invite",
    "sender" => "NAME <EMAILADDRESS>",
    "message" => "[Invite Link]"
  },
  :footer => "My Custom Text [Unsubscription Link]"
)

除了:footer:collector参数外,其中的所有内容都可以正常工作。它似乎根本不认识他们。

没有抛出任何错误,它们只是不包含在我发送的实际电子邮件中。传入这两个参数时我做错了什么?

4

2 回答 2

0

:body你的参数后面没有逗号

于 2013-09-11T23:18:22.077 回答
0

你的:collector:footer不正确。

我写了一个小 Sinatra 服务来接收带有任何参数的 POST 请求:

require 'pp'
require 'sinatra'

post "/*" do
  pp params
end

然后运行它,在我的 Mac OS 笔记本电脑上启动网络服务器。与 Sinatra 应用程序一样,它位于 0.0.0.0:4567。

运行此代码:

require 'httparty'

url = HTTParty.post(
  "http://localhost:4567/api/v2/emails?survey=1",
  :headers => {
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Accept' => 'application/x-www-form-urlencoded'
  },
  :body => {
    "subject" => 'subject',
    "sender" => 'sender',
    "message" => 'message',
  },
  :collector => 'collector',
  :footer => 'footer'
)

puts url

输出:

["survey", "1"]["subject", "subject"]["sender", "sender"]["message", "message"]["splat", ["api/v2/emails"]]["captures", ["api/v2/emails"]]

辛纳特拉 说:

127.0.0.1 - - [2013 年 9 月 11 日 17:58:47] “POST /api/v2/emails?survey=1 HTTP/1.1”200 - 0.0163
{"调查"=>"1",
 “主题”=>“主题”,
 “发件人”=>“发件人”,
 “消息”=>“消息”,
 "splat"=>["api/v2/emails"],
 “捕获”=>[“api/v2/电子邮件”]}

更改:collector:footer为字符串并将它们移动到身体内,它们应该在哪里:

require 'httparty'

url = HTTParty.post(
  "http://localhost:4567/api/v2/emails?survey=1",
  :headers => {
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Accept' => 'application/x-www-form-urlencoded'
  },
  :body => {
    "subject" => 'subject',
    "sender" => 'sender',
    "message" => 'message',
    'collector' => 'collector',
    'footer' => 'footer'
  },
)

puts url

输出:

["survey", "1"]["subject", "subject"]["sender", "sender"]["message", "message"]["collector", "collector"]["footer", "footer"]["splat", ["api/v2/emails"]]["captures", ["api/v2/emails"]]

辛纳屈说:

127.0.0.1 - - [2013 年 9 月 11 日 18:04:13] “POST /api/v2/emails?survey=1 HTTP/1.1”200 - 0.0010
{"调查"=>"1",
 “主题”=>“主题”,
 “发件人”=>“发件人”,
 “消息”=>“消息”,
 “收藏家”=>“收藏家”,
 “页脚”=>“页脚”,
 "splat"=>["api/v2/emails"],
 “捕获”=>[“api/v2/电子邮件”]}

问题是,POST 请求仅使用 URL 和:body哈希。在:body散列中包含您发送到服务器的所有变量。这就是为什么第二个版本的代码,with 'collector'and 'footer'works。

于 2013-09-12T01:15:07.720 回答