非常感谢一点帮助。
当我在Linux下使用curl执行此操作时,一切正常:
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
知道我错在哪里吗?谢谢!
编辑:
刚刚调试它,使用curl我得到了这个原始数据:
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 :(得分:0)
由于没有回答,我自己找到了一个肮脏的解决方案,使用:
uri = URI("http://www.myserver.com/adminapi/admin.php?method=login")
res = Net::HTTP.post_form(uri, 'method' => 'login', 'true' => '1', 'password' => 'PassW0')