0

THISに似たフォームがあり、Ruby を使用して CSV ファイルからデータを送信したいと考えています。これが私がやろうとしてきたことです:

require 'uri'
require 'net/http'

params = {
      'field15157482-first'   => 'bip',
      'field15157482-last'    => 'bop',
      'field15157485'         => 'bip@bob.com',
      'field15157487'         => 'option1'
      'fsSubmitButton1196962' => 'Submit'
}

x = Net::HTTP.post_form(URI.parse('http://www.formstack.com/forms/?1196833-GxMTxR20GK'), params)

間違った URL を使用してA valid form ID was not supplied.いるという予感がしますが、何に置き換えればよいかわかりません。APIを使用しますが、トークンにアクセスできないため、石器時代のアプローチを採用しています。どんな提案でも大歓迎です。

4

2 に答える 2

1

フォームは非表示の変数とCookieを使用して、「一意のセッション」を維持しようとします。幸い、Mechanizeを使用すると、「卑劣な」フォームの処理が非常に簡単になります。

require "mechanize"
form_uri = "http://www.formstack.com/forms/?1196962-617Z6Foyif"

@agent = Mechanize.new
page = @agent.get form_uri

form = page.forms[0]

form.fields_with(:class => /fsField/).each do |field|
  field.value = case field.name
                  when /first/ then "First Name"
                  when /last/ then "Last Name"
                  else "email@address.com" 
                end
end

page = form.submit form.buttons.first

puts
puts "=== Response Header"
puts
puts page.header
puts
puts "=== Response Body"
puts
puts page.body
于 2012-04-12T16:17:48.347 に答える
-1

http://www.formstack.com/forms/?1196833-GxMTxR20GKのソースとリンクの例を見ると、formstackフォームがindex.phpに投稿されており、識別するためにフォームIDを渡す必要があるようです。送信されているフォーム..両方の例のフォームを見ると、次のようなフィールドが表示されます。

<input type="hidden" name="form" value="1196833" />

paramsハッシュに以下を追加してみてください。

'form' => '1196883' # or other appropriate form value

有効な送信のために、他の非表示フィールドを含める必要がある場合もあります。

于 2012-04-12T16:18:41.367 に答える