2017-01-12 11 views
9

Tôi cóHyper nói "chương trình không hợp lệ cho Http" cho HTTPS URL

hyper = "0.10" 

Và đoạn mã sau:

let client = Client::new(); 
let mut res = client.get("https://google.com").send().unwrap(); 

Rust mang lại cho tôi được thông báo lỗi, như thể nó không có SSL hỗ trợ:

chương trình không hợp lệ cho Http

Đây là trên Rust 1.14.0 trên Debian jessie.

Làm cách nào để nhận được Hyper kết nối với SSL với URL HTTPS?

+0

Bạn có thể hiển thị thông báo lỗi đầy đủ không? –

+0

Bạn có thể muốn xem [câu trả lời này] (https://stackoverflow.com/questions/41614923/how-to-reach-an-https-site-via-proxy) sử dụng 'siêu bản địa-tls mới 'thùng. – squiguy

+0

Đối với siêu 0,11, câu trả lời nằm trong tài liệu dưới 'Cấu hình Máy khách': https://hyper.rs/guides/client/configuration/. – steamer25

Trả lời

17

Hãy thử điều này:

extern crate hyper; 
extern crate hyper_native_tls; 

use hyper::Client; 
use hyper::net::HttpsConnector; 
use hyper_native_tls::NativeTlsClient; 

fn main() { 
    let ssl = NativeTlsClient::new().unwrap(); 
    let connector = HttpsConnector::new(ssl); 
    let client = Client::with_connector(connector); 
    let mut res = client.get("https://google.com").send().unwrap(); 
} 

Chủ yếu là lấy từ this answer. Cái thiếu là phần Client::with_connector.

+0

Thú vị, vì vậy 'hyper' đảm bảo rằng bạn có một khách hàng có khả năng TLS trước khi cho phép lược đồ' https'. Đó là gọn gàng! –

+0

Giống như ma thuật, điều này chỉ hoạt động! – njaard

+1

@MatthieuM. Tôi tin rằng đó là một sự thay đổi gần đây khi mã liên quan đến TLS được đưa vào thùng khác. Mã này đang sử dụng siêu 0.10. – squiguy

Các vấn đề liên quan