问题标签 [hyper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 调用外部 crate 中定义的宏时未解决的导入
我正在尝试使用hyper crate 中的impl_header宏来实现自定义 HTTP 标头,但它似乎无法解析该hyper::header
模块。
这是我的代码:
这是编译器错误:
任何线索为什么会发生这种情况,我该如何解决?
谢谢
rust - 使用 convert::Into 和枚举来解包和转换值
我开始对 Rust 感到满意,但仍然有一些事情真的让我在生命周期中绊倒。在这种特殊情况下,我想要做的是有一个枚举,它可能有不同的类型包装为通用参数类,以在 URL 中创建强类型查询参数,尽管特定用例无关紧要,并返回该包装的转换将值转换为 &str。这是我想做的一个例子:
我最终要做的是处理明显的生命周期问题(是的,我很清楚为什么生命周期对于 into() 函数来说不够长):
在我真正想要做的是保证某些参数的静态类型的情况下,这似乎是一个丑陋的解决方法,b/c 现在它是负责正确类型转换的枚举的构造函数。好奇是否有办法做到这一点......是的,在某些时候我需要 &str 因为这是其他地方的参数,特别是:
我经历了很多事情,比如尝试返回 String 而不是&str
from into()
,但这只会导致转换问题与 a map()
of String
->发生关系&str
。从一开始就让元组正确是最简单的事情,而不是在那之后动辄与编译器对抗。
- 更新 -
好的,所以我回到枚举函数中的一个(String,String)
元组。into()
事实证明,有一个url::form_urlencoded::serialize()
与之兼容的功能的“拥有”版本。
但是,现在我也在尝试对 中的查询字符串使用相同的模式hyper::URL
,特别是:
然后我尝试map()
在 (String,String) 元组中使用的迭代器上使用:
但这会出错:x.0
活得不够长。在这种情况下 Ref 似乎是正确的,对吧?如果我不使用 ref,那么它的 k/v 寿命不够长。我在其中缺少什么“简单”的东西吗?
rust - 无法构建 Hyper - 箱子名称中的无效字符 `-`
我正在尝试运行 Github 自述文件中列出的超级示例。
Cargo.toml 看起来像这样:
但是,当我尝试使用 Cargo run 构建它时,出现以下错误:
我查看了这些不同的 crate,想看看是否可以将“rustc-serialize”更改为“rustc_serialize”,因为我认为 crate 名称不能再有连字符。但是,我找不到任何类似的东西。我真的很想能够解决这个问题,因为我有一种感觉,在 Rust 仍在打磨的时候,我会再遇到几次这个错误。
编辑:版本如下:Rust:1.0.0-beta.2 Hyper:0.3.14 Cargo:0.0.1-pre-nightly(建于 2015-03-09)
oauth - 如何获取授权承载标头?
我想为 OAuth 目的获取 Authorization Bearer 标头,但是阅读文档看起来有点混乱
这会产生错误:
src/main.rs:84:56: 84:86 错误:
hyper::header::HeaderFormat
没有为类型hyper::header::common::authorization::Authorization<hyper::header::common::authorization::Bearer>
[E0277]实现特征
从实现来看,我似乎是正确的:
https://github.com/hyperium/hyper/blob/master/src/header/common/authorization.rs
rust - 使用 Hyper 发出请求时如何设置 User-Agent 标头?
我正在尝试使用 Hyper 库在 Rust 中向 Github 的 API 发出 GET 请求,并在标头中使用用户代理字符串。我没有运气编译.header(UserAgent("string"))
。有人愿意提出一种惯用的方式来完成我想要的吗?
rust - 使用 Hyper 为 GET 请求传递数据
我正在为 Rust 开发 Twitter API,并且在将参数传递给我的 GET 请求时遇到了问题。我用于请求的代码如下所示。data_body
类似于“screen_name=a_user”,授权标头是 Twitter 所需的 OAuth 授权(这不是问题,因为它正在处理我的所有其他请求)。
我开始将它发送到 httpbin.org,这样我就可以看到原始请求。我得到的结果如下所示。
Twitter api 文档给出的 curl 请求在下面有一个 GET 请求的数据部分(我已经用空字符串替换了我的键)。我可以确认这适用于 GET。
我ContentType
从 Hyper API 中尝试了一堆不同的 s,但无法填充 HTTP 请求的 args 部分。我认为这就是问题所在,但我对 HTTP 没有太多经验,所以我很可能是错的。最终,请求返回一个 403(未经授权),这是由缺少的参数触发的。我知道我的 OAuth 标头正在正确生成,因为它正在处理所有 POST 请求,并且当我从 curl 命令复制随机数和时间戳时,我从 Twitter API 获得签名匹配。
post - Hyper POST 请求总是产生 400
我正在尝试使用 Hyper 0.9 向站点发送 POST 请求。该请求适用于curl
:
和 Python:
但我的 Rust 实现似乎没有通过,总是产生 400。
rust - 使用 hyper 和 html5ever 在流中解析 HTML 页面内容
我正在尝试解析 HTTP 请求的 HTML 响应。我使用hyper进行请求,使用html5ever进行解析。HTML 将非常大,我不需要完全解析它——我只需要从标签中识别一些数据,所以我更喜欢流式传输它。从概念上讲,我想做类似的事情:
到目前为止,我想出的是:
这似乎read_to_end
是我想调用响应以读取字节的方法,但我不清楚如何将其通过管道传输到 HTML 文档阅读器......如果这甚至可能的话。
文档parse_document
说要使用from_utf8
或者from_bytes
输入是否以字节为单位(它是)。
似乎我需要从响应中创建一个接收器,但这就是我卡住的地方。我也不清楚如何创建事件来监听我感兴趣的标签开始。
我已经查看了 html5ever 的这个示例,它似乎可以执行我想要的操作并遍历 DOM,但是我无法让这个示例本身运行——要么它已经过时,要么卷须/html5ever 太新。这似乎也将 HTML 解析为一个整体而不是一个流,但我不确定。
是否可以对这些库的当前实现做我想做的事情?