Ruby的HTTP客户端API。 Net :: HTTP提供了一个丰富的库,可用于构建HTTP用户代理。
我有一个使用 net/http 的简单帖子。 uri = URI("https://example.com") params = {标题:'foo',正文:'bar'} Net::HTTP.post_form(uri, 参数) 现在,我需要添加标题,但我找不到......
当我在开发中使用 net/http 时,速度非常慢。我已经安装了 net-http-spy gem 来获取有关每个请求的一些信息,并且我发现“打开连接”部分需要 m...
Http POST 请求需要花费大量时间才能完成 - net/http - Go
我在 Go 中使用 net/http,并且我的一个 HTTPS POST 请求需要花费大量时间(例如大约 16 秒)才能完成。虽然后端服务器处理只需要 2.2 秒,但总的来说...
我面临一个非常棘手的问题,我无法找到正确的答案。 让我们使用下面的示例代码作为参考。当我得到 400 或 40 时,“err”不会是 nil 值吗...
我是 ruby 新手,有 python 背景 我想向 URL 发出头请求并检查一些信息,例如文件是否存在于服务器上以及时间戳、etag 等,我无法...
我有两个路线处理程序 v1路由器。路径(“/{id}”)。方法(http.MethodGet)。处理程序(r.getter()) v1路由器。小路(”/”)。方法(http.MethodGet)。处理程序(r.searcher()) 当我森...
将 `Authorization Bearer` 哈希添加到 Net::HTTP post 请求 (Ruby)
如何使用 Net::HTTP 将授权承载添加到 POST 请求? 我只能在文档中找到“基本身份验证”的帮助。 req.basic_auth '用户', '通过' 来源:https://docs.ruby...
我有以下方法 def post_it(data_hash) uri = URI.parse("https://example.com/api") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true 请求 = Net::HTTP::Po...
Ruby 未定义方法“bytesize”#<Hash:0x2954fe8>
我有以下 Ruby 代码,用于沙盒模式下的跟踪网站: 需要“net/http” 需要“net/https” 需要“uri” xml = < 我有以下 Ruby 代码,用于沙盒模式下的跟踪网站: require "net/http" require "net/https" require "uri" xml = <<XML <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><data appname="dhl_entwicklerportal" language-code="de" password="Dhl_123!" request="get-status-for-public-user"><data piece-code="00340433836536550280"></data></data> XML uri = URI('https://cig.dhl.de/services/sandbox/rest/sendungsverfolgung') nhttp = Net::HTTP.new(uri.host, uri.port) nhttp.use_ssl=true nhttp.verify_mode=OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri) request.basic_auth 'xpackageWP', 'hidden' response = nhttp.start {|http| http.request(request, xml:xml) } puts response.body 我总是收到错误: d:/Ruby200/lib/ruby/2.0.0/net/http/generic_request.rb:179:in `send_request_with_body' undefined method `bytesize' for #<Hash:0x2954fe8> (NoMethodError) from d:/Ruby200/lib/ruby/2.0.0/net/http/generic_request.rb:130:in `exec' from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1404:in `block in transport_request' from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `catch' from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request' from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:1376:in `request' from D:/Dropbox_5BHIF/Dropbox/TempDHL/Main.rb:17:in `block in <main>' from d:/Ruby200/lib/ruby/2.0.0/net/http.rb:852:in `start' from D:/Dropbox_5BHIF/Dropbox/TempDHL/Main.rb:16:in `<main>' 我非常努力地解决这个问题,但我想不出任何问题。 当我在浏览器中使用链接测试它,然后使用 ?xml= 时,它工作得很好,所以这似乎是我的 Ruby 代码的问题。 您正在以哈希形式发送帖子数据。您应该将其编码为字符串。 例如使用 URI::encode_www_form: request = Net::HTTP::Post.new(uri) ... response = nhttp.start do |http| post_data = URI.encode_www_form({xml: xml}) http.request(request, post_data) end 更新 如果您想要 GET 请求,请将查询字符串附加到 url。 post_data = URI.encode_www_form({xml: xml}) uri = URI('https://cig.dhl.de/services/sandbox/rest/sendungsverfolgung?' + post_data) ... response = nhttp.start do |http| http.request(request) end request 需要一个字符串作为其第二个参数,并在该字符串上调用 bytesize。你给它一个哈希值,它不会响应 bytesize。 使用 POST 而不是 GET 请求 xml = <<XML <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><data appname="dhl_entwicklerportal" language-code="de" password="Dhl_123!" request="get-status-for-public-user"><data piece-code="00340433836536550280"></data></data> XML uri = URI('https://cig.dhl.de/services/sandbox/rest/sendungsverfolgung') nhttp = Net::HTTP.new(uri.host, uri.port) nhttp.use_ssl=true nhttp.verify_mode=OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(uri) request.body = xml request.basic_auth 'xpackageWP', 'hidden' response = nhttp.start {|http| http.request(request) } 我用.to_s解决了,它返回200。 @client.job.create_or_update(job_name, job_xml.get_xml.to_s) 这是我当前使用的 Jenkins API 客户端: https://github.com/arangamani/jenkins_api_client 我在使用 rack/test 测试 POST/GET 请求时遇到了类似的问题。 在我的例子中,响应控制器没有使用 JSON 响应 GET 请求,而是使用哈希值响应。 似乎 POST 请求需要对正在发送的数据调用 .to_s,而 GET 请求则需要对正在接收的数据调用。不过也有道理。
Ruby: Net::HTTP 为什么我会收到此 POST 请求的 400?
我正在尝试 GPTZero 的 API。文档。 文档说我需要在标头中设置 api 密钥。我将其留为空白字符串,因为网站上说我“……可以在这里尝试 API……
如何在 Rails 项目中向 Trello API 发出 PUT 请求?
由于错误,以下代码无法按预期工作(即卡片未移动到所需的列 ID)。 需要“net/http” http = Net::HTTP.new('api.trello.com') 响应 = http。
如何使用 Sinatra 在 RSpec / VCR 中模拟远程服务器?
VCR Cucumber 文档显示了许多使用小型 Sinatra 应用程序来模拟远程服务器的示例,使用从 vcr_cucumber_helpers.rb 加载的名为 start_sinatra_app 的函数。 我想用一些...
如何使用Faraday gem检索response.URL?
我正在使用Faraday来检查断裂的链接,并且我想检索我正在查询的链接的response.URL,然而,我无法找到任何文档和例子来这样做。我能够...
[也许我只是盲目的,但是许多关于在Net :: HTTP中传递标头的帖子遵循要求'net / http'的行uri = URI(“ http://www.ruby-lang.org”)req = Net :: HTTP :: Get.new(uri)req ['...
将文档上传到FSCrawler以便在Elasticsearch中建立索引的正确方法
我正在对Rails应用程序进行原型设计,以将文档上传到FSCrawler(运行REST接口),以整合到Elasticsearch索引中。以他们的例子为例:response =`curl -F“ ...
我在邮递员中发出了一个http发布请求,并且工作正常,而且我导出了python代码,并且响应数据也很好。但是当我将相同的代码与golang语法一起使用时,我无法获得...
我正在构建Golang DELETE REST端点。该请求需要一组查询参数,该参数可过滤要删除的对象。例如https://endpoint.blah.com/users?userId=7&age=24 As ...
我只想使用略有不同的URI来调用API。此代码段符合我的要求,但是我想知道是否有更有效的方法。需要'net / http'需要'json'#这些...
为什么Net :: HTTP在服务器返回503时返回500?
((希望用更好的信息代替这个问题。)我有三台服务器,我将它们称为Alice,Charlie和Harry(Harry是服务器的实际昵称,以免...