问题标签 [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 - 为什么从 Hyper crate 多次导入失败?
我正在使用 Rust 开发一个非常简单的 HTTP 客户端,它建立在hyper
(GitHub,crates.io) crate 之上。
当我尝试使用(以及使用)examples/client.rs
在新的 Cargo 项目中复制文件时,我收到多个错误,原因是从.cargo build
rustc src/main.rs
hyper
这是我的顶部main.rs
:
除了一些注释外,该文件的其余部分与存储库中的examples/client.rs
文件相同hyper
。
在编译时,我收到以下错误:
如果它可能导致这个问题,这里是我的内容Cargo.toml
:
一些导入实际上是有效的,所以假设存储库中的示例是最新的,我真的不知道出了什么问题。crate 的源文件看起来像是暴露了所涉及的类型,但我对 Rust 很陌生,所以我可能误读了这些文件。
rust - 我该如何解决这个终身问题?
在下面的代码string
中Into<Body<'a>>
,RequestParameters<'a>
. 我理解为什么,因为在方法完成后string
进入范围内into
并且不再在范围内,但Body<'a>
会保留对它的引用。
至少,这就是我认为string
持续时间不够长的原因。
我不明白的是如何构造这段代码来修复string
的生命周期。
此代码的目标是将 HashMap(例如 of "a"
to "b"
)转换为 POST 请求正文的字符串("?a=b"
例如 )。如果有更好的方法可以做到这一点,请告诉我,但我会从中受益匪浅的是了解如何解决这个终身问题。
如果我对为什么string
活得不够长有误,也请告诉我。我仍在努力掌握 Rust 中的生命周期系统,因此弄清楚这一点将对我有很大帮助。
amazon-s3 - 使用原始 https 请求将 AWS API Gateway 服务代理到 S3 文件上传
首先,很抱歉标题太长了。
我已经设置了一个 api 网关作为 s3 代理,因此我可以通过向 api url 发送 PUT 请求来上传文件。该api工作正常(或者至少我认为可以),但似乎我只能正确上传文本文件。
对于上传的文本文件(例如 Content-Type=text/plain),本地文件的大小与上传到 s3 存储桶中的文件大小相同。但是,二进制文件并非如此(例如 Content-Type=application/pdf)。s3 存储桶中的文件更大。当我从 s3 下载二进制文件时,我无法打开它们,它们已损坏。
这是发送请求的 rust 代码,我使用的是hyper 的 http 客户端:
正如您从注释掉的代码中看到的那样,我尝试使用 Content-Encoding=base64 并对从文件中读取的字节进行编码以上传。但是 Content-Encoding=base64 似乎不是 s3 接受的有效编码类型。每当我设置 Content-Encoding 时,我都无法完全上传(500:内部服务器错误,我什至看不到 s3 存储桶上大小错误的文件)。但是文本文件运行良好。
以供参考:
rust - 如何在 Hyper 处理程序之间共享 HashMap?
我正在尝试通过使用 Hyper 0.10 实现一个简单的内存 URL 缩短器来学习 Rust。我遇到了一个问题,我认为是由于尝试关闭HashMap
处理程序中的可变对象引起的:
我是否需要使用一个Arc
来共享HashMap
线程之间?如果是这样,那会是什么样子?另外,我对这个问题可能完全错了。错误消息对我来说非常神秘。
rust - 使用 Hyper 显示响应正文仅显示正文的大小
我尝试使用 Hyper 将 URL 的内容(正文)显示为文本
但是运行这个脚本只会返回正文的大小:
我做错什么了?我是不是误会了什么?
rust - `for<'r, 'r, 'r> ...` 无法在线程之间安全发送
我学习了 Rust,并尝试构建一个基于 hyper 的微路由系统(它只是为了学习目的,我知道框架存在)。
我不知道如何与hyper::server::Handler
. 我阅读了错误消息,但不幸的是,我不明白如何修复它(大多数时候,rust 编译器只是说要修复什么,现在我不确定)。
这是我尝试过的(非)工作过度简化的示例:
错误是:
如果我使用一个简单的整数,它可以工作,但不能使用Route
类型。
因此,该特征存在问题,并且“无法在线程之间安全地发送”。阅读hyper
文档,我添加了一个Mutex
,但我一定很笨,我不知道我在做什么,不知道我是应该停止学习 Rust,还是继续尝试。
rust - 无法创建 hyper::Client,因为编译器无法推断出足够的类型信息
为了试验 Hyper,我从GET 示例开始。除了该示例无法编译(no method `get` in `client`
)这一事实之外,我将我的问题提炼为一行:
此代码不会编译:
rust - 使用 Hyper 和 Flate2 读取 gzip 响应
Hyper 具有将fn read(&mut self, buf: &mut [u8]) -> io::Result<usize>
HTTP 响应的内容读取到提供的&mut [u8]
.
Flate2 可以压缩:
我试着把这两件事放在一起:
我得到了错误:
我哪里错了?
编辑:最终的工作解决方案:
openssl - 同时使用 git2 和 hyper: openssl 链接不止一次
我正在尝试构建同时使用 hyper 和 git2 的东西。现在我遇到了openssl被链接两次的问题。Shepmaster的提示将我带到Cargosfeatures
Cargos ,我尝试了,但我仍然卡住了。
我遇到的确切错误cargo build
如下:
据我所知,git2 和 hyper 都需要 openssl。有谁知道我做错了什么?由于我禁用了 hyper 的默认功能(以及更好的 cookie)openssl 不再需要它。我查看了锁定文件以查看是否openssl
需要其他任何东西,但我找不到任何东西。但我仍然得到错误。不幸的是,cargo 并没有告诉我依赖来自哪里。
这是我Cargo.toml
的依赖部分和锁定文件:
这是Cargo.lock以防万一。