2017-01-12 6 views
9

У меня естьHyper говорит "Invalid схема Http" для HTTPS URL-

hyper = "0.10" 

И следующий код:

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

Rust дает мне сообщение об ошибке, так как если он не имеет SSL поддержка:

Неверная схема Http

Это на Rust 1.14.0 на Debian jessie.

Как мне заставить Hyper подключаться с SSL к URL-адресу HTTPS?

+0

Можете ли вы показать полное сообщение об ошибке? –

+0

Возможно, вы захотите проверить [этот ответ] (https://stackoverflow.com/questions/41614923/how-to-reach-an-https-site-via-proxy), который использует новый 'hyper-native-tls 'ящик. – squiguy

+0

Для гипер 0.11 ответ приведен в документации в разделе «Конфигурация клиента»: https://hyper.rs/guides/client/configuration/. – steamer25

ответ

17

Попробуйте это:

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(); 
} 

В основном взяты из this answer. То, чего не хватало, было Client::with_connector шт.

+0

Интересно, поэтому 'hyper' гарантирует, что у вас есть клиент с поддержкой TLS, прежде чем разрешить схему' https'. Это здорово! –

+0

Как и магия, это просто работает! – njaard

+1

@ MatthieuM. Я считаю, что это недавнее изменение, так как код, связанный с TLS, попал в другой ящик. Этот код использует гипер 0.10. – squiguy