【问题标题】:Sending POST request with HTTP headers发送带有 HTTP 标头的 POST 请求
【发布时间】:2014-01-10 16:29:46
【问题描述】:

在学习 Ruby 中的 API 时对这方面很陌生。使用电子邮件服务的 API 在系统中创建用户。

这是一个 POST 示例:

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"}]

我认为我很接近(ish)?在 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

感谢您的反馈或学习。

【问题讨论】:

    标签: ruby api rest


    【解决方案1】:

    您可以在 URL 中输入凭据:

    url = "http://username:password@localhost:8080/core/postgres-pages-xy/api/rest/v4/user/create"
    

    如果用户名和密码在那里,它应该会自动进行 HTTP 基本身份验证 (source)。

    但是据说这已被弃用,所以有一个更长的解决方案:

    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 or service not known (SocketError) from /usr/lib/ruby/1.8/net/http.rb:564:in open' 来自 /usr/lib/ruby/1.8/net/http.rb:564:in connect' from /usr/lib/ruby/1.8/timeout.rb:48:in timeout' 来自 /usr/lib/ruby/1.8/timeout。 rb:76:in timeout' from /usr/lib/ruby/1.8/net/http.rb:564:in connect'
    • @Liam,getaddrinfo 错误主要发生在您的脚本无法连接到 Internet 时。你在代理后面运行吗?也可以看看:stackoverflow.com/questions/2608331/…
    • 通过工作网络,我认为它是一个代理 - 我想我会在家里试一试。
    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 2011-09-20
    • 2013-08-03
    • 2015-02-22
    • 2013-01-24
    • 2017-02-07
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多