标签: net-http

使用Net :: HTTP的块形式的HTTPS请求 - 是否可能?

要在没有阻止表单的情况下执行Net :: HTTP https请求,您可以执行以下操作:

...
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
...
Run Code Online (Sandbox Code Playgroud)

但有没有办法告诉Net :: HTTP在执行块表单时使用https?

u = URI.parse(url)
Net::HTTP.start(u.host, u.port) do |http|
  # if I put http.use_ssl = true here, ruby complains that this can't
  # be done becuase the sesion has already started
  resp = http.get(u.request_uri)
end
Run Code Online (Sandbox Code Playgroud)

我在红宝石1.8.7上

ruby ssl https net-http

7
推荐指数
1
解决办法
7563
查看次数

TypeError:无法将Net :: HTTPOK转换为String

我使用net/httpjson进行地理编码使用谷歌的地理编码API的地址.这是抛出错误的地方:

response = Net::HTTP.get_response(URI.parse(url))
result = JSON.parse(response)
Run Code Online (Sandbox Code Playgroud)

响应是Net :: HTTPOK类,但我想访问实际的JSON响应数据(而不仅仅是状态代码).

ruby json net-http google-geocoding-api

7
推荐指数
1
解决办法
6784
查看次数

Go中的Rest API - 使用net/http与像Gorilla这样的库

我看到Go本身有一个包net/http,足以提供启动和运行自己的REST API所需的一切.然而,有各种各样的框架,最流行的可能是大猩猩.

考虑到我需要做的主要事情之一是构建REST API,它通常会访问一些后端存储(数据库,缓存等)以执行CRUD操作,是否适合使用Go的标准库本身或者我应该考虑使用一些框架?

通常,人们编写新的库或框架来解决现有库中存在的问题.但是,当实际需求很简单时,许多框架也会使事情变得更糟.

所以我几乎没有问题:

  1. go lang中的基本库是否足以支持REST的基本到中等功能?

  2. 如果我最终使用内置库并且明天必须改变它以使用某些框架(如大猩猩)那么努力将是多么困难/昂贵?

  3. 框架是真正解决问题还是只是简单地解决问题?

我非常感谢有人在这里分享他的想法(他自己做出这个选择),而我更多地研究自己的想法.

rest go net-http gorilla

7
推荐指数
2
解决办法
2478
查看次数

为什么我在Rails中使用'net/http'获得"Errno :: ECONNREFUSED"?

我试图从URL解析XML文件.当我尝试这样的事情时:

require 'net/http'
require 'rubygems'
require 'xmlsimple'

url = 'http://my-address.com/xmltest/note.xml'
xml_data = Net::HTTP.get_response(URI.parse(url)).body
Run Code Online (Sandbox Code Playgroud)

一切正常,但只有当我在Rails项目之外这样做时.如果我尝试在我的Rails 3项目中包含此文件并在那里解析它,我会收到错误"Errno::ECONNREFUSED in [controller]" - Connection refused - connect(2).

我的问题如下:我不知道如何安装net/http组件.我在http://www.rubygems.org上寻找它,但我找不到它.

ruby ruby-on-rails net-http

6
推荐指数
1
解决办法
1万
查看次数

如何在ruby中设置header ['content-type'] ='application/json'

require 'net/http'

require 'rubygems'

require 'json'

url = URI.parse('http://www.xyxx/abc/pqr')

resp = Net::HTTP.get_response(url) # get_response takes an URI object

data = resp.body

puts data
Run Code Online (Sandbox Code Playgroud)

这是我在ruby中的代码,resp.data以xml格式提供数据.

rest api默认返回xml数据,如果header content-type是application/json,则返回json.

但我想要json形式的数据.为此我必须设置header ['content-type'] ='application/json'.

但我不知道,如何使用get_response方法设置标头.获取json数据.

ruby rest net-http

6
推荐指数
1
解决办法
1万
查看次数

动态生成XML并将其发布到Rails中的Web服务

我目前正在开发一个Rails应用程序,我需要动态地将XML请求发送到外部Web服务.我以前从未这样做过,我有点失落.

更准确地说,我需要在订单状态更新时向我的后勤合作伙伴发送请求.例如,当确认订单时,我需要发送客户地址,取件地址等数据......

我打算使用XML构建器动态生成请求,并根据此示例使用 Net:HTTP或HTTParty发布请求.

这是正确的方法吗?如何在控制器外生成XML请求,然后在HTTParty或Net:HTTP中使用它?

谢谢你的帮助,

克莱姆

xml ruby-on-rails builder httparty net-http

6
推荐指数
1
解决办法
3956
查看次数

Net :: HTTP对HTTPS请求的响应非常慢

出于某种原因,在我的开发机器上,我对通过Net :: HTTP执行的HTTPS请求的响应非常非常慢.我尝试过RestClient和HTTParty,他们都有同样的问题.它似乎无处不在.我已经毫无问题地提出了数百次这些请求,但今天它们的速度令人难以忍受.

pry(main)> puts Time.now; HTTParty.get('https://api.easypost.com/v2/addresses'); puts Time.now;
2015-04-29 08:07:08 -0500
2015-04-29 08:09:39 -0500
Run Code Online (Sandbox Code Playgroud)

如您所见,响应耗时2.5分钟.而且不只是这个EasyPost API URL.我已经尝试过多次SSL请求到我知道可以连接的服务器(https : //google.com,https://weather.com等),它们都会导致相同的行为.此外,我注意到从HTTP重定向到HTTPS的请求也会发生同样的事情.现在,查看非ssl请求:

pry(main)> puts Time.now; HTTParty.get('http://lookitsatravis.com'); puts Time.now;
2015-04-29 08:12:22 -0500
2015-04-29 08:12:22 -0500
Run Code Online (Sandbox Code Playgroud)

瞬间.是什么赋予了?我猜这是Ruby和OpenSSL之间的某些配置问题.我重新安装了两个(使用Ruby 2.2.1和OpenSSL 1.0.2a),我正在使用OS X Yosemite 10.10.2来获取它的价值.重新安装了我的所有宝石,但问题仍然存在.我尝试更改我的DNS设置以防万一,但没有骰子.有没有其他我可以看到的或我可以改变的任何配置将解决这个问题?

ruby ssl openssl net-http ruby-on-rails-4

6
推荐指数
1
解决办法
1020
查看次数

Capybara增加最大允许页面加载时间

我有一个页面,有时加载超过一分钟.假设这是预期的行为并且不会改变.在这些情况下,我明白了Net::ReadTimeout.

请注意,这是在通过单击上一页上的按钮而不是ajax请求导航到页面之后.因此Capybara.using_wait_time没有帮助.

我尝试了一些激进的东西(其中一些我知道不会起作用),如:

  • 设置page.driver.browser.manage.timeouts's implicit_wait,script_timeoutpage_load.
  • 在整个对象空间循环,并设置所有Selenium::WebDriver::Remote::Http::Defaulttimeout值.
  • 在整个对象空间循环,并设置所有 Net::HTTPread_timeout.
  • page.driver.browser.send(:bridge).http.instance_variable_get(:@http).read_timeout=

似乎没有工作.这应该是非常微不足道的,但我找不到办法.

如果你知道一个很棒的webdriver不可知解决方案.如果没有 - 我正在使用.

ruby page-load-time capybara net-http selenium-webdriver

6
推荐指数
1
解决办法
3537
查看次数

证书续订后,Ruby Net :: HTTP响应OpenSSL :: SSL :: SSLError"证书验证失败"

我们最近更新了我们网站的SSL证书,并在Mac OS El Capitan 10.11.3上发生以下情况:

require 'net/http'

Net::HTTP.get URI('https://www.google.com')
# => "<HTML>...</HTML>"

# The site whose certificate got renewed
Net::HTTP.get URI('https://www.example.com')
# => OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我在Google和StackOverflow上的所有搜索都提出了表明Ruby安装存在问题的答案,但它们似乎与较旧的Ruby版本有关,我认为这不是这种情况.这是我尝试过的:

  • brew update
  • brew upgrade openssl
  • rvm osx-ssl-certs update all
  • rvm install ruby-2.3.1 --disable-binary --with-openssl-dir="$(brew --prefix openssl)" (之前我没有这个版本)
  • rvm requirements
  • crlrefresh rpv 根据Uzbekjon的建议,清除OSX系统范围的CRL缓存.

我该如何解决这个问题?

笔记:

  • 在没有Ruby 2.2.3的新安装的Linux Docker容器上不会出现此问题.所以也许这与Mac OS或SSL本地缓存有关.
  • 证书续订之前可能存在此问题.我无法确定.但是,正如我在这个问题中讨论的那样,更新确实会导致与我们正在使用的第三方类似的问题.
  • Namecheap验证证书安装是否正确,在线检查器显示一切正常,所有主要浏览器都将证书显示为有效.

在BoraMa的帮助下,现在很清楚发生了什么.COMODO添加了一个名为COMODO RSA Certification Authority而不是之前的新根COMODO Certification Authority.新的root用户未在Mac的钥匙串中注册,导致此问题.

我们尝试调试此方法的一种方法是运行:

openssl s_client -connect www.mysite.com:443 …
Run Code Online (Sandbox Code Playgroud)

ruby ssl openssl ssl-certificate net-http

6
推荐指数
1
解决办法
4437
查看次数

如何在GO中执行HEAD请求?

我想使用GO net/http获取页面的内容长度?我可以在终端使用curl -i -X HEAD https://golang.org,然后检查内容长度字段.

http go net-http

6
推荐指数
1
解决办法
3011
查看次数