Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用HTTP头发送POST请求_Ruby_Api_Rest - Fatal编程技术网

Ruby 使用HTTP头发送POST请求

Ruby 使用HTTP头发送POST请求,ruby,api,rest,Ruby,Api,Rest,在Ruby中学习API是一件很新鲜的事情。使用电子邮件服务的API在系统中创建用户 这是该职位的一个例子: POST http://localhost:8080/core/postgres-pages-xy/api/rest/v4/user/create?email=user003@test.invalid HTTP/1.1 Authorization: Basic bWFzdGVyQGVuubXVjLmVjaXJjbGUuZGU6aDhuc3d1cnN0 User-Agent: curl/7.

在Ruby中学习API是一件很新鲜的事情。使用电子邮件服务的API在系统中创建用户

这是该职位的一个例子:

POST http://localhost:8080/core/postgres-pages-xy/api/rest/v4/user/create?email=user003@test.invalid HTTP/1.1
Authorization: Basic bWFzdGVyQGVuubXVjLmVjaXJjbGUuZGU6aDhuc3d1cnN0
User-Agent: curl/7.29.0
Host: localhost:8080
Proxy-Connection: Keep-Alive
Content-Type:application/json
Accept:application/json
Content-Length: 86

[{"name":"user.FirstName","value":"Stan"}, {"name":"user.LastName", "value":"Laurel"}]
我想我很接近?在Ruby中,我希望有人能告诉我如何发送身份验证。系统需要登录标题不确定如何做到这一点,将是电子邮件和密码:

    require 'uri'
require 'net/http'

uri = URI("https://site.com/api/rest/v4/user/create?email=ruby1@ruby.com")
https = Net::HTTP.new(uri.host, uri.port)


request = Net::HTTP::Post.new(uri.path)
request.basic_auth 'email', 'pass'

request["user.FirstName"] = 'Liam'
request["user.LastName"] = 'Coates'

response = https.request(request)
puts response

感谢您的反馈或学习。

您可以在URL中输入凭据:

url = "http://username:password@localhost:8080/core/postgres-pages-xy/api/rest/v4/user/create"
如果用户名和密码在那里,它应该自动执行HTTP基本身份验证()

然而,据推测这是不推荐的,因此有一个较长的解决方案:

req = Net::HTTP::Post.new(uri)
req.basic_auth 'user', 'pass'

res = Net::HTTP.start(uri.hostname, uri.port) {|http|
  http.request(req)
}
puts res.body

我现在已经使用了它,并将我的代码更新为上面的版本-我必须处理它,因为我不知道这些错误是什么:/usr/lib/ruby/1.8/net/http.rb:564:in
initialize]:getaddrinfo:Name或service not known(SocketError)from/usr/lib/ruby/1.8/net/http.rb:564:in
open'from/usr/lib/ruby/1.8/net/http.rb:564:in
connect'from/usr/lib/ruby/1.8/timeout.rb:48:in
timeout'from/usr/lib/ruby/1.8/net/http.rb:564:inconnect'@Liam,getaddrinfo错误主要发生在脚本无法连接到internet时。你是在找代理吗?还可以看看:通过一个工作网络,我假设它是一个代理——我想我可以回家了。