- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这 2 个请求应该有相同的结果,但第一个请求返回 200(OK),第二个请求返回 404(未找到)。这是为什么?
require 'net/http'
url = "http://readwrite.com/2013/12/04/google-compute-engine"
uri = URI(url)
Net::HTTP.get_response(uri)
#=> #<Net::HTTPOK 200 OK readbody=true>
Net::HTTP.new(uri.host).request(Net::HTTP::Get.new(url))
#=> #<Net::HTTPNotFound 404 Not Found readbody=true>
它只发生在一些 url 上。我无法弄清楚模式。这是另一个示例:http://davidduchemin.com/2014/01/towards-mastery-again/
。
最佳答案
首先,让我们通过使用 tcpdump 查看它们的实际 HTTP 请求来比较两者,以便我们了解可能发生的情况:
tcpdump -vvASs 0 port 80 and host www.readwrite.com
# Net::HTTP.get_response(uri)GET /2013/12/04/google-compute-engine HTTP/1.1Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3Accept: */*User-Agent: RubyHost: readwrite.com
# Net::HTTP.new(uri.host).request(Net::HTTP::Get.new(url))GET http://readwrite.com/2013/12/04/google-compute-engine HTTP/1.1Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3Accept: */*User-Agent: RubyConnection: closeHost: readwrite.com
We can see that the second request is incorrectly requesting the full URL (with hostname) as the path. This is because you’re passing url
to Net::HTTP::Get.new
which causes Net::HTTP::Get.new(url).path
to be just what we see above: the full URL with hostname. Instead pass the URI instance (uri
) to Net::HTTP::Get.new
:
Net::HTTP.new(uri.host).request(Net::HTTP::Get.new(uri))
#=> #<Net::HTTPOK 200 OK readbody=true>
它的 tcpdump 现在实际上与第一个相同:
GET /2013/12/04/google-compute-engine HTTP/1.1Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3Accept: */*User-Agent: RubyHost: readwrite.comConnection: close
关于ruby - 为什么 Ruby Net::HTTP.get_response 和 Net::HTTP.new(uri.host).request 返回不同的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272893/
我有这段代码来检查网站是运行还是关闭: require 'net/http' require 'uri' res = Net::HTTP.get_response(URI.parse('http://
我的 django TestMiddleware 代码有问题 我的 djando 版本 Django 3.0.6 我的代码 中间件.py from django.utils.deprecation i
所以我使用的是 Django 1.11。以前用过Django 1.9,记得写过这个登录中间件。 import re from django.conf import settings from djan
当我运行服务器并查看本地主机时,我得到了这个错误: JSONDecodeError at ...Traceback response = get_response(request) 我做错了什么? 我
我正在尝试使用 CvMLData::get_responses但它没有给我回复。 我得到的行数与文档中所说的一样多,但我得到的不是响应,而是前 n 个值,其中 n 等于行数或样本数。 这是我的示例(第
我正在尝试在我的一个 Rails 模型上测试一种方法。我正在从 url 返回 HTTP 状态,但不知道如何对返回进行 stub 以测试不同的返回代码,以确保我的代码适用于不同的情况。 这是我要模拟的代
Net::HTTP.get_response 是否在几秒后超时? 如果没有,我可以添加超时吗? 最佳答案 根据最新 documentation,Net:HTTP.get_response 和/或 Ne
我使用 Django 1.11 并遇到此错误 class TenantMiddleware: def __init__(self, get_response): self.ge
我使用 Django 1.11 并遇到此错误 class TenantMiddleware: def __init__(self, get_response): self.ge
我的 API 设置如下: url = URI.parse('https://www.reddit.com/search.json?q=' + @query + '&limit=' + @result
我的任务是创建与 SurveyMonkey 应用程序生成的 Excel 输出非常相似的输出。大多数答案到答案的映射都非常简单,但映射矩阵类型的问题似乎过于复杂。有没有人想出一种可靠的方法来映射这些数据
我正在关注 https://www.howtographql.com/graphql-python/4-authentication/ 上的 graphql python 教程.它在前 3 个部分运行
当我运行我的服务器 python3 manage.py runserver浏览器返回 A server error occurred。请联系管理员。然后我得到这个错误 `Traceback (most
我正在使用 UTL_HTTP 从 Oracle 11g 调用网络服务。我确信我的证书和钱包设置正确,可以通过 HTTPS 进行连接。对于有效的业务数据,调用始终有效。 当我传递无效数据(在本例中为不存
我试图在我的网站上实现使用 Facebook 登录功能,但在尝试从 Facebook 取回访问 token 时遇到障碍。这是我的代码: if params[:error_reason] == "use
这 2 个请求应该有相同的结果,但第一个请求返回 200(OK),第二个请求返回 404(未找到)。这是为什么? require 'net/http' url = "http://readwrite.
我是一名优秀的程序员,十分优秀!