2015-07-21 3 views
0

Немного помощи было бы высоко оценено.Ошибка формы HTTP POST в Ruby

Когда я делаю это с загнутым под Linux все нормально:

curl --data "password=myPassW0&true=1" http://www.myserver.com/adminapi/admin.php?method=login 

Когда я пытаюсь в Ruby, что-то я беспорядок и идет не так:

require 'net/http' 
require 'net/https' 
require 'openssl' 

uri = URI.parse("http://www.myserver.com") 
http = Net::HTTP.new(uri.host, uri.port) 

if uri.port == 443 then http.use_ssl = true end 
request = Net::HTTP::Post.new("/adminapi/admin.php") 
request.body = {'method' => 'login', 'password' => 'myPassW0', 'true' => '1'} 
response = http.request(request) 

puts response 

Любая идея, где я не прав? Благодаря!

EDIT:

Просто отлажена его, с загнутым Я получаю исходные данные:

POST /adminapi/admin.php?method=login HTTP/1.1 
User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6 
Host: localhost 
Accept: */* 
Content-Length: 35 
Content-Type: application/x-www-form-urlencoded 

password=myPassW0&true=1 

Но с рубином я получаю это, что неправильно:

POST /adminapi/admin.php HTTP/1.1 
Accept: */* 
Content-Type: application/x-www-form-urlencoded 
Connection: close 
Content-Length: 3 
Host: localhost 

passwordmyPassW0true1methodlogin 
+0

Пожалуйста, предоставьте ответ об ошибке, который вы получаете. – askilondz

+0

# bsteo

ответ

0

Поскольку нет ответа , просто нашел грязное решение самостоятельно, используя:

uri = URI("http://www.myserver.com/adminapi/admin.php?method=login") 
res = Net::HTTP.post_form(uri, 'method' => 'login', 'true' => '1', 'password' => 'PassW0') 
Смежные вопросы