Я использую Rails, чтобы публиковать некоторые данные форм в веб-сервисе, работающем с php с помощью Slim Framework. Моя проблема в том что Net::HTTP.post_form(uri, data)
неправильно передает данные на сервер.
Мой код выглядит так:
Рельсы:
url = URI.parse("http://somewhere.com/login")
username = "my username"password = "my password"
response = Net::HTTP.post_form(url, username: username, password: password)
Обновить:
Изменение вызова на
response = Net::HTTP.post_form(url, { 'username' => username, 'password' => password } )
по предложению Джона и Тальи тоже не работает.
Я даже пытался построить запрос вручную так:
req = Net::HTTP::Post.new uri
req.body = "username=#{username}&password=#{password}"response = Net::HTTP.start(uri.host, uri.port) {|http| http.request(req)}
С тем же результатом, что параметры неправильно отправляются на мой веб-сервис.
Тонкий:
$app->post('/login', function($request, $response, $args) use ($app, $authenticator) {
$user_params = $request->getQueryParams();
var_dump($user_params);
echo $authenticator->login($user_params);
}); // login
Дело в том, что Slim сторона работает. Я протестировал его с помощью расширенного клиентского приложения Chrome.
Используя Rails var_dump()
результаты в array(0)
, Очевидно, что никакие параметры не передаются на сервер.
У кого-нибудь есть идеи?
Я пытаюсь такой же сценарий с Net::HTTP.post_form(URI.parse('http://www.mailtester.com/testmail.php'), { 'q' => "[email protected]", 'submit' => 'Check address', 'action' => 'testmail.php', 'method' => "post" })
Это дает мне результат как #<Net::HTTPForbidden 403 Forbidden readbody=true>
Других решений пока нет …